diff options
| author | 2010-08-21 12:56:04 -0400 | |
|---|---|---|
| committer | 2010-08-21 12:56:04 -0400 | |
| commit | a117dd48bea3e42d9d6d2a58c87d0a04edad8678 (patch) | |
| tree | 57e0bed65e1d4f2622fae93dad9ec2b015ee8a30 /src/modules/m_sqloper.cpp | |
| parent | Move spanningtree config to <spanningtree> from various other places (diff) | |
| download | inspircd++-a117dd48bea3e42d9d6d2a58c87d0a04edad8678.tar.gz inspircd++-a117dd48bea3e42d9d6d2a58c87d0a04edad8678.tar.bz2 inspircd++-a117dd48bea3e42d9d6d2a58c87d0a04edad8678.zip | |
More config logging fixups
Diffstat (limited to 'src/modules/m_sqloper.cpp')
| -rw-r--r-- | src/modules/m_sqloper.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/modules/m_sqloper.cpp b/src/modules/m_sqloper.cpp index 86915af7b..6ea1fe398 100644 --- a/src/modules/m_sqloper.cpp +++ b/src/modules/m_sqloper.cpp @@ -44,8 +44,9 @@ class OpMeQuery : public SQLQuery { ServerInstance->Logs->Log("m_sqloper",DEBUG, "SQLOPER: result for %s", uid.c_str()); User* user = ServerInstance->FindNick(uid); - if (!user) + if (!user || !IS_LOCAL(user)) return; + user->frozen = 0; // multiple rows may exist SQLEntries row; @@ -76,21 +77,21 @@ class OpMeQuery : public SQLQuery } ServerInstance->Logs->Log("m_sqloper",DEBUG, "SQLOPER: no matches for %s (checked %d rows)", uid.c_str(), res.Rows()); // nobody succeeded... fall back to OPER - fallback(); + fallback(user); } void OnError(SQLerror& error) { ServerInstance->Logs->Log("m_sqloper",DEFAULT, "SQLOPER: query failed (%s)", error.Str()); - fallback(); - } - - void fallback() - { User* user = ServerInstance->FindNick(uid); - if (!user) + if (!user || !IS_LOCAL(user)) return; + user->frozen = 0; + fallback(user); + } + void fallback(User* user) + { Command* oper_command = ServerInstance->Parser->GetHandler("OPER"); if (oper_command) @@ -160,6 +161,9 @@ public: { if (SQL) { + // freeze the user's recvq while we wait for SQL + // this ensures that the result of the /OPER is returned in order + user->frozen = 1; LookupOper(user, parameters[0], parameters[1]); /* Query is in progress, it will re-invoke OPER if needed */ return MOD_RES_DENY; |
