summaryrefslogtreecommitdiff
path: root/src/modules/m_namesx.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-04-15 22:18:01 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-04-15 22:18:01 +0000
commit9af6ca54c00f2c82782e14b5b222514c5b4b25c1 (patch)
treeaf86504ec11256ee743098dd36a6d0e69d5b40a1 /src/modules/m_namesx.cpp
parentb98126b5440b8979d9b2215685c47740026ce29f (diff)
Fix for bug that took ages to track down and was very subtle.
During authentication the flow of commands is as follows: > SERVER aaaaaa < SERVER bbbbbb > BURST < BURST ... what can happen is that between the two server commands we can introduce SERVER aaaa to server bbbbb again, from a different socket. As server aaaaa doesnt exist yet and we're waiting for it to say yes or no to our own SERVER command over at bbbbbb, it cant be found with FindServer. Therefore we need a second list of servers that arent yet authenticated, but are waiting TO authenticate, by the pointer their socket has and the name they want to become after auth. If two servers introduce themselves at the same time, triggering what was the race condition, both servers are disconnected with "ERROR :Negotiation collision" and must try again until only one succeeds. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6802 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_namesx.cpp')
0 files changed, 0 insertions, 0 deletions