diff -uNr ircservices-5.0.40/Changes ircservices-5.0.41/Changes --- ircservices-5.0.40/Changes 2004-09-05 15:19:47 +0900 +++ ircservices-5.0.41/Changes 2004-10-03 10:59:54 +0900 @@ -1,5 +1,15 @@ Version 5.0 ----------- +2004/10/03 .41 Fixed SQUIT of juped servers on Bahamut. Reported by Pasi + Hirvonen +2004/10/03 Fixed cosmetic bug in NickServ SUSPEND help. Reported by + Craig McLure +2004/10/02 Fixed bug causing endless log messages on full network + buffer. Reported by +2004/10/02 OperServ AKILLCHAN now honors the WallOSAkill setting. + Reported by Pasi Hirvonen +2004/09/19 Fixed missing object file in Hybrid module compilation. + Reported by Jon Christopherson 2004/09/05 .40 Fixed careless bug in autojoin module. 2004/09/05 .39 Fixed bug allowing some NickServ/ChanServ commands to be used even in read-only mode. Reported by Craig McLure diff -uNr ircservices-5.0.40/lang/de.l ircservices-5.0.41/lang/de.l --- ircservices-5.0.40/lang/de.l 2004-09-05 10:43:07 +0900 +++ ircservices-5.0.41/lang/de.l 2004-09-19 15:35:08 +0900 @@ -473,6 +473,8 @@ # ACCESS responses NICK_ACCESS_SYNTAX ACCESS {ADD | DEL | LIST} [Maske] +NICK_ACCESS_DISABLED + Die Chatnamen Access Liste steht zur Zeit nicht zur Verfügung. NICK_ACCESS_ALREADY_PRESENT %s steht bereits auf Ihrer Zugriffsliste. NICK_ACCESS_REACHED_LIMIT @@ -693,6 +695,8 @@ AJOIN ADD Raum NICK_AJOIN_DEL_SYNTAX AJOIN DEL Raum +NICK_AJOIN_DISABLED + Die Chatnamen AutoJoin Liste steht zur Zeit nicht zur Verfügung. NICK_AJOIN_ALREADY_PRESENT Raum %s ist bereits auf der Autojoin-Liste. NICK_AJOIN_LIST_FULL @@ -1245,6 +1249,8 @@ # LEVELS responses CHAN_LEVELS_SYNTAX LEVELS Raum {SET | DIS[ABLE] | LIST | RESET} [Einstellung [Stufe]] +CHAN_LEVELS_READONLY + Die Raum Privilegien Liste steht zur Zeit nicht zur Verfügung. CHAN_LEVELS_RANGE Die Stufe muss zwischen %d und %d liegen (einschließlich). CHAN_LEVELS_CHANGED diff -uNr ircservices-5.0.40/lang/nl.l ircservices-5.0.41/lang/nl.l --- ircservices-5.0.40/lang/nl.l 2004-07-27 14:42:01 +0900 +++ ircservices-5.0.41/lang/nl.l 2004-09-06 15:57:06 +0900 @@ -514,6 +514,8 @@ # ACCESS responses NICK_ACCESS_SYNTAX ACCESS {ADD | DEL | LIST} [masker] +NICK_ACCESS_DISABLED + Sorry, aanpassen van de bijnaam toegangslijst is tijdelijk uitgeschakeld. NICK_ACCESS_ALREADY_PRESENT Masker %s staat al op uw toeganglijst. NICK_ACCESS_REACHED_LIMIT @@ -738,6 +740,8 @@ AJOIN ADD kamer NICK_AJOIN_DEL_SYNTAX AJOIN DEL kamer +NICK_AJOIN_DISABLED + Sorry, aanpassen van de bijnaam autojoin lijst is tijdelijk uitgeschakeld. NICK_AJOIN_ALREADY_PRESENT Kamer %s is al aanwezig in uw auto-entree lijst. NICK_AJOIN_LIST_FULL @@ -1300,6 +1304,8 @@ # LEVELS responses CHAN_LEVELS_SYNTAX LEVELS kamer {SET | DIS[ABLE] | LIST | RESET} [optie [level]] +CHAN_LEVELS_READONLY + Sorry, aanpassen van kamer toegangsniveaus is tijdelijk uitgeschakeld. CHAN_LEVELS_RANGE Level moet tussen %d en %d liggen. CHAN_LEVELS_CHANGED diff -uNr ircservices-5.0.40/lang/tr.l ircservices-5.0.41/lang/tr.l --- ircservices-5.0.40/lang/tr.l 2004-09-02 14:46:18 +0900 +++ ircservices-5.0.41/lang/tr.l 2004-09-15 09:48:17 +0900 @@ -465,6 +465,8 @@ # ACCESS responses NICK_ACCESS_SYNTAX ACCESS {ADD | DEL | LIST} [mask] +NICK_ACCESS_DISABLED + Nick erisim listesi su an degistirilemez. NICK_ACCESS_ALREADY_PRESENT %s erisim listenizde zaten var. NICK_ACCESS_REACHED_LIMIT @@ -687,6 +689,8 @@ AJOIN ADD channel NICK_AJOIN_DEL_SYNTAX AJOIN DEL channel +NICK_AJOIN_DISABLED + Nick otojoin listesi su an degistirilemez. NICK_AJOIN_ALREADY_PRESENT %s kanali zaten otojoin listenizde var. NICK_AJOIN_LIST_FULL @@ -1244,6 +1248,8 @@ # LEVELS responses CHAN_LEVELS_SYNTAX LEVELS kanal {SET | DIS[ABLE] | LIST | RESET} [ozellik [seviye]] +CHAN_LEVELS_READONLY + Kanal erisim derecesi listesi su an degistirilemez. CHAN_LEVELS_RANGE Seviye %d ve %d arasinda olmalidir. CHAN_LEVELS_CHANGED diff -uNr ircservices-5.0.40/modules/nickserv/main.c ircservices-5.0.41/modules/nickserv/main.c --- ircservices-5.0.40/modules/nickserv/main.c 2004-09-05 15:24:39 +0900 +++ ircservices-5.0.41/modules/nickserv/main.c 2004-10-03 11:04:35 +0900 @@ -430,6 +430,8 @@ } else if (stricmp(cmd, "RELEASE") == 0) { notice_help(s_NickServ, u, NICK_HELP_RELEASE, maketime(u->ngi,NSReleaseTimeout,MT_SECONDS)); + } else if (stricmp(cmd, "SUSPEND") == 0 && is_oper(u)) { + notice_help(s_NickServ, u, NICK_OPER_HELP_SUSPEND, s_OperServ); } else { help_cmd(s_NickServ, u, module, cmd); } @@ -1851,10 +1853,6 @@ if (!EnableGetpass) cmd_GETPASS->name = ""; - cmd = lookup_cmd(module, "SUSPEND"); - if (cmd) - cmd->help_param1 = s_OperServ; - cb_command = register_callback(module, "command"); cb_help = register_callback(module, "HELP"); cb_help_cmds = register_callback(module, "HELP COMMANDS"); diff -uNr ircservices-5.0.40/modules/operserv/akill.c ircservices-5.0.41/modules/operserv/akill.c --- ircservices-5.0.40/modules/operserv/akill.c 2004-09-05 15:24:39 +0900 +++ ircservices-5.0.41/modules/operserv/akill.c 2004-10-03 11:04:36 +0900 @@ -406,6 +406,9 @@ if (expiry) expiry += time(NULL); + if (WallOSAkill) + wallops(s_OperServ, "%s used AKILLCHAN for \2%s\2", u->nick, c->name); + count = 0; old_immed = ImmediatelySendAutokill; ImmediatelySendAutokill = 1; diff -uNr ircservices-5.0.40/modules/protocol/Makefile ircservices-5.0.41/modules/protocol/Makefile --- ircservices-5.0.40/modules/protocol/Makefile 2004-09-05 15:24:37 +0900 +++ ircservices-5.0.41/modules/protocol/Makefile 2004-10-03 11:04:33 +0900 @@ -15,7 +15,7 @@ OBJECTS-bahamut.so = banexcept.o invitemask.o svsnick.o OTHEROBJ-bahamut.so = sjoin-bahamut.o OBJECTS-dreamforge.so = svsnick.o -OBJECTS-hybrid.so = banexcept.o svsnick.o +OBJECTS-hybrid.so = banexcept.o invitemask.o svsnick.o OTHEROBJ-hybrid.so = sjoin-bahamut.o OBJECTS-monkey.so = halfop.o sjoin.o OBJECTS-ptlink.so = banexcept.o sjoin.o svsnick.o diff -uNr ircservices-5.0.40/modules/protocol/bahamut.c ircservices-5.0.41/modules/protocol/bahamut.c --- ircservices-5.0.40/modules/protocol/bahamut.c 2004-09-05 15:24:39 +0900 +++ ircservices-5.0.41/modules/protocol/bahamut.c 2004-10-03 11:04:36 +0900 @@ -347,6 +347,41 @@ /*************************************************************************/ +/* SQUIT handler, for remote SQUITs. This has to be implemented as a + * "receive message" callback because we can't layer message functions on + * top of each other. */ + +static void do_bahamut_squit(char *source, int ac, char **av) +{ + Server *server; + + if (ac < 1) /* also checked in do_receive_message, but for completeness */ + return; + server = get_server(av[0]); + if (!server) { + send_cmd(ServerName, "402 %s %s :No such server", source, av[0]); + } else if (!server->fake || server == get_server(ServerName)) { + /* We should never see an SQUIT for ourselves, since the remote + * server will disconnect us instead, but just in case... */ + send_cmd(ServerName, "402 %s %s :Not a juped server", source, av[0]); + } else { + do_squit(source, ac, av); + send_cmd(NULL, "SQUIT %s :%s", av[0], av[1] ? av[1] : ""); + } +} + +static int do_receive_message(char *source, char *cmd, int ac, char **av) +{ + if (irc_stricmp(cmd,"SQUIT") != 0) + return 0; + if (!source || !*source || ac < 1 || irc_stricmp(source,av[0]) == 0) + return 0; + do_bahamut_squit(source, ac, av); + return 1; +} + +/*************************************************************************/ + static Message bahamut_messages[] = { { "AKILL", NULL }, { "CAPAB", m_capab }, @@ -417,8 +452,6 @@ static void do_send_server(void) { send_cmd(NULL, "PASS %s :TS", RemotePassword); - /* Note that we don't actually support UNCONNECT (remote SQUITs) but - * Bahamut will throw us off if we don't claim to */ send_cmd(NULL, "CAPAB TS3 SSJOIN NICKIP NOQUIT TSMODE UNCONNECT"); send_cmd(NULL, "SERVER %s 1 :%s", ServerName, ServerDesc); send_cmd(NULL, "SVINFO 3 3 0 :%ld", (long)time(NULL)); @@ -853,6 +886,7 @@ if (!add_callback(NULL, "load module", do_load_module) || !add_callback(NULL, "unload module", do_unload_module) + || !add_callback(NULL, "receive message", do_receive_message) || !add_callback(NULL, "user servicestamp change", do_user_servicestamp_change) || !add_callback(NULL, "channel MODE", do_channel_mode) @@ -918,6 +952,7 @@ remove_callback(NULL, "channel MODE", do_channel_mode); remove_callback(NULL, "user servicestamp change", do_user_servicestamp_change); + remove_callback(NULL, "receive message", do_receive_message); remove_callback(NULL, "unload module", do_unload_module); remove_callback(NULL, "load module", do_load_module); unregister_messages(bahamut_messages); diff -uNr ircservices-5.0.40/sockets.c ircservices-5.0.41/sockets.c --- ircservices-5.0.40/sockets.c 2004-09-05 15:24:38 +0900 +++ ircservices-5.0.41/sockets.c 2004-10-03 11:04:34 +0900 @@ -1120,7 +1120,12 @@ if (s->rend == s->rtop) s->rend = s->rbuf; } - errno = errno_save; + if (nread == 0) { + nread = -1; + errno = ENOBUFS; + } else { + errno = errno_save; + } return nread; } diff -uNr ircservices-5.0.40/version.sh ircservices-5.0.41/version.sh --- ircservices-5.0.40/version.sh 2004-09-05 15:20:16 +0900 +++ ircservices-5.0.41/version.sh 2004-10-03 11:00:00 +0900 @@ -6,7 +6,7 @@ # $PROGRAM is the string returned as the first part of a /VERSION reply, # and must not contain spaces. It is not used anywhere else. PROGRAM=ircservices -VERSION=5.0.40 +VERSION=5.0.41 # Increment Services build number if [ -f version.c ] ; then