diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-09-30 22:21:34 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-09-30 22:21:34 +0000 |
commit | 2a88309abe3f5757b7638e32d44bc89b7d4f5b0e (patch) | |
tree | 77a0425a547a58a0e9cd996a7188ab05a79632e8 /src/modules/m_spanningtree/treesocket2.cpp | |
parent | 40049217975bc69dffec6e1f978dde4c010918c7 (diff) |
Some suggestions from jilles about handling unknown prefix errors, and some ideas of my own about handling unknown modes in client introduction to prevent leaving a desynched user on the source server
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10613 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/treesocket2.cpp')
-rw-r--r-- | src/modules/m_spanningtree/treesocket2.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index 7e5c7fad5..e27c1d879 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -534,13 +534,17 @@ bool TreeSocket::ProcessLine(std::string &line) * Not a special s2s command. Emulate the user doing it. * This saves us having a huge ugly command parser again. */ - User *who = this->ServerInstance->FindUUID(prefix); + User* who = this->ServerInstance->FindUUID(prefix); if (!who) { - // this looks ugly because command is an irc::string - this->SendError("Command (" + std::string(command.c_str()) + ") from unknown prefix (" + prefix + ")! Dropping link."); - return false; + /* this looks ugly because command is an irc::string + * It is important that we dont close the link here, unknown prefix can occur + * due to various race conditions such as the KILL message for a user somehow + * crossing the users QUIT further upstream from the server. Thanks jilles! + */ + ServerInstance->Logs->Log("m_spanningtree", DEBUG, "Command " + std::string(command.c_str()) + " from unknown prefix " + prefix + "! Dropping entire command."); + return true; } if (command == "NICK") |