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>2005-01-05 20:12:47 +0000
committergeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-01-05 20:12:47 +0000
commit8dfbdaeae644692872cd42ee5061542e24b90e50 (patch)
treeb85fd6a00ac7e0ac7e191c2cbd63ae17861554e5 /src
parentdb826b63e1e27e47c9f0c28b7d9593221837407e (diff)
BUILD : 1.7.6 (524) BUGS : NOTES : bot_raw_ban was not adjusted for TSMODE capable IRCDs yet
git-svn-id: svn://svn.anope.org/anope/trunk@524 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@378 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/botserv.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/botserv.c b/src/botserv.c
index 3124652c4..b2cec855e 100644
--- a/src/botserv.c
+++ b/src/botserv.c
@@ -1061,8 +1061,10 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
static void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick,
char *reason)
{
- char *av[3];
+ int ac;
+ char *av[4];
char mask[BUFSIZE];
+ char buf[BUFSIZE];
User *u = finduser(nick);
if (!u)
@@ -1088,13 +1090,30 @@ static void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick,
}
}
- av[0] = ci->name;
- av[1] = sstrdup("+b");
get_idealban(ci, u, mask, sizeof(mask));
- av[2] = mask;
- anope_cmd_mode(ci->bi->nick, av[0], "+b %s", av[2]);
- do_cmode(ci->bi->nick, 3, av);
- free(av[1]);
+
+ if (ircdcap->tsmode) {
+ snprintf(buf, BUFSIZE - 1, "%ld", (long int) time(NULL));
+ av[0] = ci->name;
+ av[1] = buf;
+ av[2] = sstrdup("+b");
+ av[3] = mask;
+ ac = 4;
+ } else {
+ av[0] = ci->name;
+ av[1] = sstrdup("+b");
+ av[2] = mask;
+ ac = 3;
+ }
+
+ anope_cmd_mode(ci->bi->nick, ci->name, "+b %s", mask);
+ do_cmode(ci->bi->nick, ac, av);
+
+ /* We need to free our sstrdup'd "+b" -GD */
+ if (ircdcap->tsmode)
+ free(av[2]);
+ else
+ free(av[1]);
av[0] = ci->name;
av[1] = nick;