summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-05-14 22:30:03 -0400
committerAdam <Adam@anope.org>2012-05-14 22:30:03 -0400
commit0a8d46b538e14d358c80501c317ed9610f1fa508 (patch)
treed58333a4c7b2c48152ccb9291aca1d09bb656548
parenta84226edf0368aab581fcd1365a0cbff6e0c5a4a (diff)
Fixed parsing FMODE on inspircd 1.1
-rw-r--r--modules/protocol/inspircd11.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/modules/protocol/inspircd11.cpp b/modules/protocol/inspircd11.cpp
index 1fc278284..356bbf146 100644
--- a/modules/protocol/inspircd11.cpp
+++ b/modules/protocol/inspircd11.cpp
@@ -811,15 +811,14 @@ bool event_fmode(const Anope::string &source, const std::vector<Anope::string> &
return true;
/* TS's are equal now, so we can proceed with parsing */
- std::vector<Anope::string> newparams;
- for (unsigned n = 0; n < params.size(); ++n)
- {
- if (n != 1)
- {
- newparams.push_back(params[n]);
- Log(LOG_DEBUG) << "Param: " << params[n];
- }
- }
+ std::vector<Anope::string> newparams; // channel, modes, ts
+ newparams.push_back(params[0]);
+ // For fun, modes sometimes get sent without a mode prefix
+ Anope::string modes = "+" + params[2];
+ for (unsigned n = 3; n < params.size(); ++n)
+ modes += " " + params[n];
+ newparams.push_back(modes);
+ newparams.push_back(params[1]);
return ircdmessage->OnMode(source, newparams);
}