summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgeniusdex 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
committergeniusdex 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
commitaff742a18e9e30c22d93c229836aa37a18bc4c21 (patch)
tree4646f3a3b87edd2c5768b0cc6800b9cf6d681b57 /src
parent3f7afe4d02fd1ed1084c740113605064a415a436 (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.c20
-rw-r--r--src/users.c3
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);