From: Michael Poole Date: Tue, 25 Mar 2008 03:22:05 +0000 (-0400) Subject: src/proto-p10.c (AddUser): Avoid sending a duplicate irc_user() during bursts. X-Git-Tag: v1.4.0-rc3~24 X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=4e957e3b845963aa6cc80ebedb96f131695a34ab src/proto-p10.c (AddUser): Avoid sending a duplicate irc_user() during bursts. --- diff --git a/src/proto-p10.c b/src/proto-p10.c index e4077ac..7711560 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -2088,13 +2088,19 @@ AddUser(struct server* uplink, const char *nick, const char *ident, const char * ignore_user = 0; if ((oldUser = GetUserH(nick))) { - if (IsLocal(oldUser) && (IsService(oldUser) || IsPersistent(oldUser))) { - /* The service should collide the new user off. */ + if (IsLocal(oldUser) + && (IsService(oldUser) || IsPersistent(oldUser)) + && !uplink->burst) { + /* The service should collide the new user off - but not + * if the new user is coming in during a burst. (During a + * burst, the bursting server will kill either our user -- + * triggering a ReintroduceUser() -- or its own.) + */ oldUser->timestamp = timestamp - 1; irc_user(oldUser); } if (oldUser->timestamp > timestamp) { - /* "Old" user is really newer; remove them */ + /* "Old" user is really newer; remove them. */ DelUser(oldUser, 0, 1, "Overruled by older nick"); } else { /* User being added is too new; do not add them to