summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>2009-09-09 22:23:09 +0000
committerjantje_85 <jantje_85@5417fbe8-f217-4b02-8779-1006273d7864>2009-09-09 22:23:09 +0000
commit0b82d74262490887c83733544db5c250ea757d05 (patch)
treeb2cc28c65d7e6b2ea3af0b28cb1ecec639bbb1cc
parent5cb5dc197a6e6b63b6521f8c88354acd6318a552 (diff)
Fixed a number of TS6 issues, mainly related to nicks instead of IDs being given to anope_cmd_mode() in combination with a status change (Bug #1096). Also Fixed a small bug in os_oline.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2495 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes1
-rw-r--r--include/services.h4
-rw-r--r--src/botserv.c4
-rw-r--r--src/channels.c18
-rw-r--r--src/chanserv.c48
-rw-r--r--src/core/cs_clear.c22
-rw-r--r--src/core/cs_modes.c22
-rw-r--r--src/core/cs_register.c4
-rw-r--r--src/core/cs_topic.c2
-rw-r--r--src/core/os_clearmodes.c20
-rw-r--r--src/core/os_oline.c1
-rw-r--r--src/modules/cs_appendtopic.c2
-rw-r--r--version.log3
13 files changed, 78 insertions, 73 deletions
diff --git a/Changes b/Changes
index ba149e45b..362a5f272 100644
--- a/Changes
+++ b/Changes
@@ -15,6 +15,7 @@ Provided by Anope Dev. <team@anope.org> - 2009
08/27 F Fixed services sending no or wrong help to opers. [#1104]
08/29 F Fixed defcon failing to set and remove modes. [#1101]
08/30 F Fixed MLOCK superseding DEFCON mode lock. [ #00]
+09/09 F Fixed number of TS6 compatibility issues. [#1096]
Provided by Han` <Han@mefalcon.org> - 2009
07/28 F Updated german language file. [ #00]
diff --git a/include/services.h b/include/services.h
index 79ff66635..48e38d53c 100644
--- a/include/services.h
+++ b/include/services.h
@@ -265,6 +265,10 @@ typedef enum { false, true } boolean;
/* Protocol tweaks */
+/* If the IRCd supports TS6 / p10 and it s being used, this selects the uid instead of the nick.. */
+#define GET_USER(u) ((ircd->p10 || (UseTS6 && ircd->ts6)) ? (u->uid ? u->uid : u->nick) : u->nick)
+#define GET_BOT(bot) ((ircd->p10 || (UseTS6 && ircd->ts6)) ? (find_uid(bot) ? find_uid(bot)->uid : bot) : bot)
+
typedef struct ircdvars_ IRCDVar;
typedef struct ircdcapab_ IRCDCAPAB;
diff --git a/src/botserv.c b/src/botserv.c
index 365c78dde..5de5a657d 100644
--- a/src/botserv.c
+++ b/src/botserv.c
@@ -1078,13 +1078,13 @@ void bot_raw_mode(User * requester, ChannelInfo * ci, char *mode,
av[0] = ci->name;
av[1] = buf;
av[2] = mode;
- av[3] = nick;
+ av[3] = GET_USER(u);
ac = 4;
anope_cmd_mode(ci->bi->nick, av[0], "%s %s", av[2], av[3]);
} else {
av[0] = ci->name;
av[1] = mode;
- av[2] = nick;
+ av[2] = GET_USER(u);
ac = 3;
anope_cmd_mode(ci->bi->nick, av[0], "%s %s", av[1], av[2]);
}
diff --git a/src/channels.c b/src/channels.c
index 2dcb0d39a..d37c79e9a 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1477,7 +1477,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
strcat(modebuf, tmp);
free(tmp);
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
} else {
add_modes &= ~CUS_OWNER;
}
@@ -1486,14 +1486,14 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
strcat(modebuf, tmp);
free(tmp);
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
} else {
add_modes &= ~CUS_PROTECT;
}
if ((add_modes & CUS_OP) && !(status & CUS_OP)) {
strcat(modebuf, "o");
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
rem_modes |= CUS_DEOPPED;
} else {
add_modes &= ~CUS_OP;
@@ -1501,14 +1501,14 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
if ((add_modes & CUS_HALFOP) && !(status & CUS_HALFOP)) {
strcat(modebuf, "h");
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
} else {
add_modes &= ~CUS_HALFOP;
}
if ((add_modes & CUS_VOICE) && !(status & CUS_VOICE)) {
strcat(modebuf, "v");
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
} else {
add_modes &= ~CUS_VOICE;
}
@@ -1520,25 +1520,25 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
strcat(modebuf, tmp);
free(tmp);
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
}
if (rem_modes & CUS_PROTECT) {
tmp = stripModePrefix(ircd->adminset);
strcat(modebuf, tmp);
free(tmp);
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
}
if (rem_modes & CUS_OP) {
strcat(modebuf, "o");
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
add_modes |= CUS_DEOPPED;
}
if (rem_modes & CUS_HALFOP) {
strcat(modebuf, "h");
strcat(userbuf, " ");
- strcat(userbuf, user->nick);
+ strcat(userbuf, GET_USER(user));
}
}
diff --git a/src/chanserv.c b/src/chanserv.c
index da9928aeb..dce22c06b 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -1268,13 +1268,13 @@ int check_valid_admin(User * user, Channel * chan, int servermode)
if (servermode && !check_access(user, chan->ci, CA_AUTOPROTECT)) {
notice_lang(s_ChanServ, user, CHAN_IS_REGISTERED, s_ChanServ);
anope_cmd_mode(whosends(chan->ci), chan->name, "%s %s",
- ircd->adminunset, user->nick);
+ ircd->adminunset, GET_USER(user));
return 0;
}
if (check_access(user, chan->ci, CA_AUTODEOP)) {
anope_cmd_mode(whosends(chan->ci), chan->name, "%s %s",
- ircd->adminunset, user->nick);
+ ircd->adminunset, GET_USER(user));
return 0;
}
@@ -1305,40 +1305,40 @@ int check_valid_op(User * user, Channel * chan, int servermode)
tmp = stripModePrefix(ircd->ownerunset);
anope_cmd_mode(whosends(chan->ci), chan->name,
"%so%s %s %s %s", ircd->adminunset,
- tmp, user->nick,
- user->nick, user->nick);
+ tmp, GET_USER(user),
+ GET_USER(user), GET_USER(user));
free(tmp);
} else {
tmp = stripModePrefix(ircd->ownerunset);
anope_cmd_mode(whosends(chan->ci), chan->name,
"%sho%s %s %s %s %s",
ircd->adminunset, tmp,
- user->nick, user->nick, user->nick,
- user->nick);
+ GET_USER(user), GET_USER(user), GET_USER(user),
+ GET_USER(user));
free(tmp);
}
} else if (!ircd->owner && ircd->protect) {
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
anope_cmd_mode(whosends(chan->ci), chan->name,
"%so %s %s", ircd->adminunset,
- user->nick, user->nick);
+ GET_USER(user), GET_USER(user));
} else {
anope_cmd_mode(whosends(chan->ci), chan->name,
"%soh %s %s %s", ircd->adminunset,
- user->nick, user->nick, user->nick);
+ GET_USER(user), GET_USER(user), GET_USER(user));
}
} else {
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
- user->nick);
+ GET_USER(user));
} else {
anope_cmd_mode(whosends(chan->ci), chan->name,
- "-ho %s %s", user->nick, user->nick);
+ "-ho %s %s", GET_USER(user), GET_USER(user));
}
}
} else {
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
- user->nick);
+ GET_USER(user));
}
return 0;
}
@@ -1349,16 +1349,16 @@ int check_valid_op(User * user, Channel * chan, int servermode)
tmp = stripModePrefix(ircd->ownerunset);
anope_cmd_mode(whosends(chan->ci), chan->name,
"%sho%s %s %s %s %s", ircd->adminunset,
- tmp, user->nick, user->nick,
- user->nick, user->nick);
+ tmp, GET_USER(user), GET_USER(user),
+ GET_USER(user), GET_USER(user));
free(tmp);
} else {
anope_cmd_mode(whosends(chan->ci), chan->name, "-ho %s %s",
- user->nick, user->nick);
+ GET_USER(user), GET_USER(user));
}
} else {
anope_cmd_mode(whosends(chan->ci), chan->name, "-o %s",
- user->nick);
+ GET_USER(user));
}
return 0;
}
@@ -1383,7 +1383,7 @@ int check_should_op(User * user, char *chan)
return 0;
if (check_access(user, ci, CA_AUTOOP)) {
- anope_cmd_mode(whosends(ci), chan, "+o %s", user->nick);
+ anope_cmd_mode(whosends(ci), chan, "+o %s", GET_USER(user));
return 1;
}
@@ -1406,7 +1406,7 @@ int check_should_voice(User * user, char *chan)
return 0;
if (check_access(user, ci, CA_AUTOVOICE)) {
- anope_cmd_mode(whosends(ci), chan, "+v %s", user->nick);
+ anope_cmd_mode(whosends(ci), chan, "+v %s", GET_USER(user));
return 1;
}
@@ -1423,7 +1423,7 @@ int check_should_halfop(User * user, char *chan)
return 0;
if (check_access(user, ci, CA_AUTOHALFOP)) {
- anope_cmd_mode(whosends(ci), chan, "+h %s", user->nick);
+ anope_cmd_mode(whosends(ci), chan, "+h %s", GET_USER(user));
return 1;
}
@@ -1443,8 +1443,8 @@ int check_should_owner(User * user, char *chan)
if (((ci->flags & CI_SECUREFOUNDER) && is_real_founder(user, ci))
|| (!(ci->flags & CI_SECUREFOUNDER) && is_founder(user, ci))) {
tmp = stripModePrefix(ircd->ownerset);
- anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick,
- user->nick);
+ anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, GET_USER(user),
+ GET_USER(user));
free(tmp);
return 1;
}
@@ -1464,8 +1464,8 @@ int check_should_protect(User * user, char *chan)
if (check_access(user, ci, CA_AUTOPROTECT)) {
tmp = stripModePrefix(ircd->adminset);
- anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick,
- user->nick);
+ anope_cmd_mode(whosends(ci), chan, "+o%s %s %s", tmp, GET_USER(user),
+ GET_USER(user));
free(tmp);
return 1;
}
@@ -1701,7 +1701,7 @@ void restore_topic(char *chan)
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
anope_cmd_join(s_ChanServ, chan, c->creation_time);
- anope_cmd_mode(NULL, chan, "+o %s", s_ChanServ);
+ anope_cmd_mode(NULL, chan, "+o %s", GET_BOT(s_ChanServ));
}
}
anope_cmd_topic(whosends(ci), c->name, c->topic_setter,
@@ -1763,7 +1763,7 @@ int check_topiclock(Channel * c, time_t topic_time)
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
anope_cmd_join(s_ChanServ, c->name, c->creation_time);
- anope_cmd_mode(NULL, c->name, "+o %s", s_ChanServ);
+ anope_cmd_mode(NULL, c->name, "+o %s", GET_BOT(s_ChanServ));
}
}
diff --git a/src/core/cs_clear.c b/src/core/cs_clear.c
index 566286e4c..c3934d840 100644
--- a/src/core/cs_clear.c
+++ b/src/core/cs_clear.c
@@ -213,13 +213,13 @@ int do_clear(User * u)
av[2] = tmp;
/* We have to give as much nicks as modes.. - Viper */
for (i = 0; i < count; i++)
- av[i+3] = cu->user->nick;
+ av[i+3] = GET_USER(cu->user);
ac = 3 + i;
} else {
av[1] = tmp;
/* We have to give as much nicks as modes.. - Viper */
for (i = 0; i < count; i++)
- av[i+2] = cu->user->nick;
+ av[i+2] = GET_USER(cu->user);
ac = 2 + i;
}
@@ -240,8 +240,8 @@ int do_clear(User * u)
snprintf(tmp, BUFSIZE, "-%s%s%s", (isop ? "o" : ""), (isadmin ?
ircd->adminunset+1 : ""), (isown ? ircd->ownerunset+1 : ""));
/* We need to send the IRCd a nick for every mode.. - Viper */
- snprintf(tmp2, BUFSIZE, "%s %s %s", (isop ? cu->user->nick : ""),
- (isadmin ? cu->user->nick : ""), (isown ? cu->user->nick : ""));
+ snprintf(tmp2, BUFSIZE, "%s %s %s", (isop ? GET_USER(cu->user) : ""),
+ (isadmin ? GET_USER(cu->user) : ""), (isown ? GET_USER(cu->user) : ""));
if (ircdcap->tsmode) {
snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
@@ -249,7 +249,7 @@ int do_clear(User * u)
av[2] = tmp;
/* We have to give as much nicks as modes.. - Viper */
for (i = 0; i < count; i++)
- av[i+3] = cu->user->nick;
+ av[i+3] = GET_USER(cu->user);
ac = 3 + i;
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[2], tmp2);
@@ -257,7 +257,7 @@ int do_clear(User * u)
av[1] = tmp;
/* We have to give as much nicks as modes.. - Viper */
for (i = 0; i < count; i++)
- av[i+2] = cu->user->nick;
+ av[i+2] = GET_USER(cu->user);
ac = 2 + i;
anope_cmd_mode(whosends(ci), av[0], "%s %s", av[1], tmp2);
@@ -283,12 +283,12 @@ int do_clear(User * u)
av[0] = sstrdup(chan);
av[1] = buf;
av[2] = sstrdup("-h");
- av[3] = sstrdup(cu->user->nick);
+ av[3] = sstrdup(GET_USER(cu->user));
ac = 4;
} else {
av[0] = sstrdup(chan);
av[1] = sstrdup("-h");
- av[2] = sstrdup(cu->user->nick);
+ av[2] = sstrdup(GET_USER(cu->user));
ac = 3;
}
@@ -337,12 +337,12 @@ int do_clear(User * u)
av[0] = sstrdup(chan);
av[1] = buf;
av[2] = sstrdup("-v");
- av[3] = sstrdup(cu->user->nick);
+ av[3] = sstrdup(GET_USER(cu->user));
ac = 4;
} else {
av[0] = sstrdup(chan);
av[1] = sstrdup("-v");
- av[2] = sstrdup(cu->user->nick);
+ av[2] = sstrdup(GET_USER(cu->user));
ac = 3;
}
@@ -386,7 +386,7 @@ int do_clear(User * u)
for (cu = c->users; cu; cu = next) {
next = cu->next;
av[0] = sstrdup(chan);
- av[1] = sstrdup(cu->user->nick);
+ av[1] = sstrdup(GET_USER(cu->user));
av[2] = sstrdup(buf);
anope_cmd_kick(whosends(ci), av[0], av[1], av[2]);
do_kick(s_ChanServ, 3, av);
diff --git a/src/core/cs_modes.c b/src/core/cs_modes.c
index 22460291a..cca0a4d4b 100644
--- a/src/core/cs_modes.c
+++ b/src/core/cs_modes.c
@@ -220,7 +220,7 @@ int do_owner(User * u)
if (!chan) {
av[0] = sstrdup(ircd->ownerset);
- av[1] = u->nick;
+ av[1] = GET_USER(u);
/* Sets the mode to the user on every channels he is on. */
@@ -228,7 +228,7 @@ int do_owner(User * u)
if ((ci = uc->chan->ci) && !(ci->flags & CI_VERBOTEN)
&& is_founder(u, ci)) {
anope_cmd_mode(whosends(ci), uc->chan->name, "%s %s",
- av[0], u->nick);
+ av[0], GET_USER(u));
chan_set_modes(s_ChanServ, uc->chan, 2, av, 1);
}
}
@@ -249,10 +249,10 @@ int do_owner(User * u)
notice_lang(s_ChanServ, u, ACCESS_DENIED);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerset,
- u->nick);
+ GET_USER(u));
av[0] = sstrdup(ircd->ownerset);
- av[1] = u->nick;
+ av[1] = GET_USER(u);
chan_set_modes(s_ChanServ, c, 2, av, 1);
free(av[0]);
}
@@ -276,7 +276,7 @@ int do_deowner(User * u)
if (!chan) {
av[0] = sstrdup(ircd->ownerunset);
- av[1] = u->nick;
+ av[1] = GET_USER(u);
/* Sets the mode to the user on every channels he is on. */
@@ -284,7 +284,7 @@ int do_deowner(User * u)
if ((ci = uc->chan->ci) && !(ci->flags & CI_VERBOTEN)
&& is_founder(u, ci)) {
anope_cmd_mode(whosends(ci), uc->chan->name, "%s %s",
- av[0], u->nick);
+ av[0], GET_USER(u));
chan_set_modes(s_ChanServ, uc->chan, 2, av, 1);
}
}
@@ -305,10 +305,10 @@ int do_deowner(User * u)
notice_lang(s_ChanServ, u, ACCESS_DENIED);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerunset,
- u->nick);
+ GET_USER(u));
av[0] = sstrdup(ircd->ownerunset);
- av[1] = u->nick;
+ av[1] = GET_USER(u);
chan_set_modes(s_ChanServ, c, 2, av, 1);
free(av[0]);
}
@@ -341,7 +341,7 @@ int do_util(User * u, CSModeUtil * util)
if ((ci = uc->chan->ci) && !(ci->flags & CI_VERBOTEN)
&& check_access(u, ci, util->levelself)) {
anope_cmd_mode(whosends(ci), uc->chan->name, "%s %s",
- util->mode, u->nick);
+ util->mode, GET_USER(u));
chan_set_modes(s_ChanServ, uc->chan, 2, av, 2);
if (util->notice && ci->flags & util->notice)
@@ -378,10 +378,10 @@ int do_util(User * u, CSModeUtil * util)
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
} else {
anope_cmd_mode(whosends(ci), c->name, "%s %s", util->mode,
- u2->nick);
+ GET_USER(u2));
av[0] = util->mode;
- av[1] = u2->nick;
+ av[1] = GET_USER(u2);
chan_set_modes(s_ChanServ, c, 2, av, 3);
if (util->notice && ci->flags & util->notice)
diff --git a/src/core/cs_register.c b/src/core/cs_register.c
index ec0a33102..de3df8926 100644
--- a/src/core/cs_register.c
+++ b/src/core/cs_register.c
@@ -180,11 +180,11 @@ int do_register(User * u)
/* On most ircds you do not receive the admin/owner mode till its registered */
if (ircd->admin) {
anope_cmd_mode(s_ChanServ, chan, "%s %s", ircd->adminset,
- u->nick);
+ GET_USER(u));
}
if (ircd->owner && ircd->ownerset) {
anope_cmd_mode(s_ChanServ, chan, "%s %s", ircd->ownerset,
- u->nick);
+ GET_USER(u));
}
send_event(EVENT_CHAN_REGISTERED, 1, chan);
}
diff --git a/src/core/cs_topic.c b/src/core/cs_topic.c
index a1538e1c6..003bd2c95 100644
--- a/src/core/cs_topic.c
+++ b/src/core/cs_topic.c
@@ -104,7 +104,7 @@ int do_cs_topic(User * u)
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
anope_cmd_join(s_ChanServ, c->name, c->creation_time);
- anope_cmd_mode(NULL, c->name, "+o %s", s_ChanServ);
+ anope_cmd_mode(NULL, c->name, "+o %s", GET_BOT(s_ChanServ));
}
}
anope_cmd_topic(whosends(ci), c->name, u->nick, topic ? topic : "",
diff --git a/src/core/os_clearmodes.c b/src/core/os_clearmodes.c
index e309ee901..742c8c7f1 100644
--- a/src/core/os_clearmodes.c
+++ b/src/core/os_clearmodes.c
@@ -112,7 +112,7 @@ int do_clearmodes(User * u)
continue;
}
argv[0] = sstrdup("-o");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
chan_set_modes(s_OperServ, c, 2, argv, 0);
free(argv[0]);
}
@@ -122,7 +122,7 @@ int do_clearmodes(User * u)
if (!chan_has_user_status(c, cu->user, CUS_OP))
continue;
argv[0] = sstrdup("-o");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
anope_cmd_mode(s_OperServ, c->name, "-o %s",
cu->user->nick);
chan_set_modes(s_OperServ, c, 2, argv, 0);
@@ -138,7 +138,7 @@ int do_clearmodes(User * u)
continue;
}
argv[0] = sstrdup("-v");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
chan_set_modes(s_OperServ, c, 2, argv, 0);
free(argv[0]);
}
@@ -149,7 +149,7 @@ int do_clearmodes(User * u)
if (!chan_has_user_status(c, cu->user, CUS_VOICE))
continue;
argv[0] = sstrdup("-v");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
anope_cmd_mode(s_OperServ, c->name, "-v %s",
cu->user->nick);
chan_set_modes(s_OperServ, c, 2, argv, 0);
@@ -166,7 +166,7 @@ int do_clearmodes(User * u)
continue;
}
argv[0] = sstrdup("-h");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
chan_set_modes(s_OperServ, c, 2, argv, 0);
free(argv[0]);
}
@@ -176,7 +176,7 @@ int do_clearmodes(User * u)
if (!chan_has_user_status(c, cu->user, CUS_HALFOP))
continue;
argv[0] = sstrdup("-h");
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
anope_cmd_mode(s_OperServ, c->name, "-h %s",
cu->user->nick);
chan_set_modes(s_OperServ, c, 2, argv, 0);
@@ -192,7 +192,7 @@ int do_clearmodes(User * u)
continue;
}
argv[0] = sstrdup(ircd->ownerunset);
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
chan_set_modes(s_OperServ, c, 2, argv, 0);
free(argv[0]);
}
@@ -202,7 +202,7 @@ int do_clearmodes(User * u)
if (!chan_has_user_status(c, cu->user, CUS_OWNER))
continue;
argv[0] = sstrdup(ircd->ownerunset);
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
anope_cmd_mode(s_OperServ, c->name, "%s %s",
ircd->ownerunset, cu->user->nick);
chan_set_modes(s_OperServ, c, 2, argv, 0);
@@ -219,7 +219,7 @@ int do_clearmodes(User * u)
continue;
}
argv[0] = sstrdup(ircd->adminunset);
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
chan_set_modes(s_OperServ, c, 2, argv, 0);
free(argv[0]);
}
@@ -229,7 +229,7 @@ int do_clearmodes(User * u)
if (!chan_has_user_status(c, cu->user, CUS_PROTECT))
continue;
argv[0] = sstrdup(ircd->adminunset);
- argv[1] = cu->user->nick;
+ argv[1] = GET_USER(cu->user);
anope_cmd_mode(s_OperServ, c->name, "%s %s",
ircd->adminunset, cu->user->nick);
chan_set_modes(s_OperServ, c, 2, argv, 0);
diff --git a/src/core/os_oline.c b/src/core/os_oline.c
index 6512ccbb9..7ccc07a52 100644
--- a/src/core/os_oline.c
+++ b/src/core/os_oline.c
@@ -90,7 +90,6 @@ int do_operoline(User * u)
notice_lang(s_OperServ, u, NICK_X_NOT_IN_USE, nick);
} else if (u2 && flags[0] == '+') {
anope_cmd_svso(s_OperServ, nick, flags);
- anope_cmd_mode(s_OperServ, nick, "+o");
common_svsmode(u2, "+o", NULL);
notice_lang(s_OperServ, u2, OPER_OLINE_IRCOP);
notice_lang(s_OperServ, u, OPER_OLINE_SUCCESS, flags, nick);
diff --git a/src/modules/cs_appendtopic.c b/src/modules/cs_appendtopic.c
index c1e786933..1593953f5 100644
--- a/src/modules/cs_appendtopic.c
+++ b/src/modules/cs_appendtopic.c
@@ -148,7 +148,7 @@ int my_cs_appendtopic(User * u)
if (ircd->join2set) {
if (whosends(ci) == s_ChanServ) {
anope_cmd_join(s_ChanServ, c->name, c->creation_time);
- anope_cmd_mode(NULL, c->name, "+o %s", s_ChanServ);
+ anope_cmd_mode(NULL, c->name, "+o %s", GET_BOT(s_ChanServ));
}
}
anope_cmd_topic(whosends(ci), c->name, u->nick, topic, c->topic_time);
diff --git a/version.log b/version.log
index c093c6171..9749ec420 100644
--- a/version.log
+++ b/version.log
@@ -9,9 +9,10 @@ VERSION_MAJOR="1"
VERSION_MINOR="8"
VERSION_PATCH="2"
VERSION_EXTRA="-svn"
-VERSION_BUILD="2491"
+VERSION_BUILD="2495"
# $Log$ # Changes since 1.8.2 Release
+#Revision 2495 - Fixed a number of TS6 issues, mainly related to nicks instead of IDs being given to anope_cmd_mode() in combination with a status change (Bug #1096). Also Fixed a small bug in os_oline.
#Revision 2491 - Fixed typo in install.js so it will correctly detect MySQL 5.1 on Windows
#Revision 2485 - Fixed MLOCK locked mode removal getting priority over DEFCON locked mode setting.
#Revision 2480 - Fixed defcon not setting modes on newly created unregged channels and failing to force remove defcon-locked modes.