usermode change succeeded because ircd uses whowas history and found the previous user with this nick was this user
much friendlier and simply achieved by using information already available
-diff -r ec3841c774be include/channel.h
---- a/include/channel.h Sun Jan 11 22:38:38 2009 +0000
-+++ b/include/channel.h Sun Jan 11 22:38:38 2009 +0000
+diff -r 85f3d4ad0a52 include/channel.h
+--- a/include/channel.h Mon Jan 26 12:10:57 2009 +0100
++++ b/include/channel.h Mon Jan 26 12:29:23 2009 +0100
@@ -390,7 +390,7 @@
extern void make_zombie(struct Membership* member, struct Client* who,
struct Client* cptr, struct Client* sptr,
void add_invite(struct Client *cptr, struct Channel *chptr);
int number_of_zombies(struct Channel *chptr);
-diff -r ec3841c774be ircd/channel.c
---- a/ircd/channel.c Sun Jan 11 22:38:38 2009 +0000
-+++ b/ircd/channel.c Sun Jan 11 22:38:38 2009 +0000
+diff -r 85f3d4ad0a52 ircd/channel.c
+--- a/ircd/channel.c Mon Jan 26 12:10:57 2009 +0100
++++ b/ircd/channel.c Mon Jan 26 12:29:23 2009 +0100
@@ -218,9 +218,10 @@
* @param user a string representing the client to be found
* @param chasing a variable set to 0 if the user was found directly,
}
/* find client we're manipulating */
- acptr = find_chasing(state->sptr, t_str, NULL);
-+ acptr = find_chasing(state->sptr, t_str, NULL,1);
++ acptr = find_chasing(state->sptr, t_str, NULL, 1);
} else {
if (t_str[5] == ':') {
t_str[5] = '\0';
-diff -r ec3841c774be ircd/m_kick.c
---- a/ircd/m_kick.c Sun Jan 11 22:38:38 2009 +0000
-+++ b/ircd/m_kick.c Sun Jan 11 22:38:38 2009 +0000
+diff -r 85f3d4ad0a52 ircd/m_kick.c
+--- a/ircd/m_kick.c Mon Jan 26 12:10:57 2009 +0100
++++ b/ircd/m_kick.c Mon Jan 26 12:29:23 2009 +0100
@@ -127,7 +127,7 @@
|| !IsChanOp(member2))
return send_reply(sptr, ERR_CHANOPRIVSNEEDED, name);
- if (!(who = find_chasing(sptr, parv[2], 0)))
-+ if (!(who = find_chasing(sptr, parv[2], 0,1)))
++ if (!(who = find_chasing(sptr, parv[2], 0, 1)))
return 0; /* find_chasing sends the reply for us */
/* Don't allow the channel service to be kicked */
-diff -r ec3841c774be ircd/m_mode.c
---- a/ircd/m_mode.c Sun Jan 11 22:38:38 2009 +0000
-+++ b/ircd/m_mode.c Sun Jan 11 22:38:38 2009 +0000
+diff -r 85f3d4ad0a52 ircd/m_mode.c
+--- a/ircd/m_mode.c Mon Jan 26 12:10:57 2009 +0100
++++ b/ircd/m_mode.c Mon Jan 26 12:29:23 2009 +0100
@@ -117,7 +117,7 @@
struct Client *acptr;
acptr = FindUser(parv[1]);
- if (!acptr)
-+ if (!(acptr = find_chasing(sptr, parv[1], 0,0)))
++ if (!(acptr = find_chasing(sptr, parv[1], 0, 0)))
{
send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
return 0;