summaryrefslogtreecommitdiff
path: root/src/inspircd.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-05-06 00:51:48 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-05-06 00:51:48 +0000
commit90f349cd108f2a522575d862100ed1fbc8e3ba75 (patch)
tree59ff85c95573f8104cc4a596c85dd7ddd2434ced /src/inspircd.cpp
parentf938b078f8e283f52a4be36da584ee001030a247 (diff)
Fixed park crash bug #63 reported by ViaraiX
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1312 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/inspircd.cpp')
-rw-r--r--src/inspircd.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index ecfb5539e..9ee351e08 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -4361,6 +4361,8 @@ int InspIRCd(char** argv, int argc)
strlcpy(sanitized,single_line.c_str(),MAXBUF);
if (*sanitized)
{
+ log(DEBUG,"ref in: %lu",fd_ref_table[currfd]);
+ userrec* old_comp = fd_ref_table[currfd];
// we're gonna re-scan to check if the nick is gone, after every
// command - if it has, we're gonna bail
process_buffer(sanitized,current);
@@ -4368,7 +4370,11 @@ int InspIRCd(char** argv, int argc)
// we cant do anything more with their buffer, so bail.
// there used to be an ugly, slow loop here. Now we have a reference
// table, life is much easier (and FASTER)
- if (!fd_ref_table[currfd])
+ userrec* new_comp = fd_ref_table[currfd];
+ log(DEBUG,"ref out: %lu",fd_ref_table[currfd]);
+ if (old_comp != new_comp)
+ log(DEBUG,"Bailing, old_comp != new_comp");
+ if ((currfd < 0) || (!fd_ref_table[currfd]) || (old_comp != new_comp))
goto label;
}