diff options
author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-03-01 09:57:02 +0000 |
---|---|---|
committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-03-01 09:57:02 +0000 |
commit | aff742a18e9e30c22d93c229836aa37a18bc4c21 (patch) | |
tree | 4646f3a3b87edd2c5768b0cc6800b9cf6d681b57 /src | |
parent | 3f7afe4d02fd1ed1084c740113605064a415a436 (diff) |
BUILD : 1.7.13 (976) BUGS : 396 NOTES : Fixed TS6 issues with handling nick changes and channel modes
git-svn-id: svn://svn.anope.org/anope/trunk@976 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@701 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/channels.c | 20 | ||||
-rw-r--r-- | src/users.c | 3 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/channels.c b/src/channels.c index 8f77d8fdd..f2614b799 100644 --- a/src/channels.c +++ b/src/channels.c @@ -1104,11 +1104,21 @@ void do_cmode(const char *source, int ac, char **av) /* :42XAAAAAO TMODE 1106409026 #ircops +b *!*@*.aol.com */ if (UseTS6 && ircd->ts6) { - alog("chan %s : mode %s : extra %s", av[1], av[2], av[3]); - av[0] = sstrdup(av[1]); - av[1] = sstrdup(av[2]); - av[2] = sstrdup(av[3]); - alog("chan %s : mode %s : extra %s", av[0], av[1], av[2]); + if (*av[0] == '#' || *av[0] == '&') { + if (debug) { + alog("debug: Before TS6 swap: do_cmode() chan %s : mode %s : extra %s", av[1], av[2], av[3]); + } + av[0] = (ac >= 2 ? sstrdup(av[1]) : NULL); + av[1] = (ac >= 3 ? sstrdup(av[2]) : NULL); + av[2] = (ac >= 4 ? sstrdup(av[3]) : NULL); + if (debug) { + alog("debug: After TS swap: do_cmode() chan %s : mode %s : extra %s", av[0], av[1], av[2]); + } + } else { + if (debug) { + alog("debug: TS swap not needed: do_cmode() chan %s : mode %s : extra %s", av[0], av[1], av[2]); + } + } } chan = findchan(av[0]); diff --git a/src/users.c b/src/users.c index c8abab7c3..5d1583b25 100644 --- a/src/users.c +++ b/src/users.c @@ -656,6 +656,9 @@ User *do_nick(const char *source, char *nick, char *username, char *host, /* An old user changing nicks. */ if (UseTS6) user = find_byuid(source); + if (!user) { + user = finduser(source); + } else user = finduser(source); |