diff options
| author | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2007-04-21 12:35:13 +0000 |
|---|---|---|
| committer | geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2007-04-21 12:35:13 +0000 |
| commit | d04fbb953b7c1c9bf038255c121ef3c5f98bf598 (patch) | |
| tree | d9a420254a47526babbfdfa2af936143f0c356bc /src/channels.c | |
| parent | 208219f8ec1ac99476c36d84401b8d6086ea68b8 (diff) | |
BUILD : 1.7.18 (1241) BUGS : 707 NOTES : Applied a patch by jilles to fix various charybdis and ts6 related issues
git-svn-id: svn://svn.anope.org/anope/trunk@1241 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@960 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/channels.c')
| -rw-r--r-- | src/channels.c | 50 |
1 files changed, 6 insertions, 44 deletions
diff --git a/src/channels.c b/src/channels.c index 3d7f8487f..fd6c2e05a 100644 --- a/src/channels.c +++ b/src/channels.c @@ -218,7 +218,8 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av, } } - if (!(user = finduser(*av))) { + if (!(user = finduser(*av)) + && !(UseTS6 && ircd->ts6 && (user = find_byuid(*av)))) { if (debug) { alog("debug: MODE %s %c%c for nonexistent user %s", chan->name, (add ? '+' : '-'), mode, *av); @@ -1080,7 +1081,7 @@ void do_cmode(const char *source, int ac, char **av) { Channel *chan; ChannelInfo *ci = NULL; - int i, tofree0 = 0, tofree1 = 0, tofree2 = 0; + int i; char *t; if (ircdcap->tsmode) { @@ -1106,37 +1107,10 @@ void do_cmode(const char *source, int ac, char **av) } /* :42XAAAAAO TMODE 1106409026 #ircops +b *!*@*.aol.com */ - if (UseTS6 && ircd->ts6) { - 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]); - } - if (ac >= 2) { - av[0] = sstrdup(av[1]); - tofree0 = 1; - } else { - av[0] = NULL; - } - if (ac >= 3) { - av[1] = sstrdup(av[2]); - tofree1 = 1; - } else { - av[1] = NULL; - } - if (ac >= 4) { - av[2] = sstrdup(av[3]); - tofree2 = 1; - } else { - av[2] = 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]); - } + if (isdigit(av[0][0])) { + ac--; + av++; } } @@ -1148,12 +1122,6 @@ void do_cmode(const char *source, int ac, char **av) alog("debug: MODE %s for nonexistent channel %s", merge_args(ac - 1, av + 1), av[0]); } - if (tofree0) - free(av[0]); - if (tofree1) - free(av[1]); - if (tofree2) - free(av[2]); return; } @@ -1169,12 +1137,6 @@ void do_cmode(const char *source, int ac, char **av) ac--; av++; chan_set_modes(source, chan, ac, av, 1); - if (tofree0) - free(av[0]); - if (tofree1) - free(av[1]); - if (tofree2) - free(av[2]); } /*************************************************************************/ |
