diff options
-rw-r--r-- | Changes | 2 | ||||
-rw-r--r-- | src/protocol/inspircd11.c | 56 | ||||
-rwxr-xr-x | src/protocol/inspircd11.h | 1 | ||||
-rw-r--r-- | version.log | 12 |
4 files changed, 44 insertions, 27 deletions
@@ -1,5 +1,7 @@ Anope Version S V N -------------------- +12/28 F Some silly logic errors in anope_event_capab() in inspircd11.c [ #00] +12/28 F RSQUIT support for InspIRCd 1.1 [#692] 12/24 F inspircd11 module now uses FMODE instead of MODE [#724] 08/29 A Session limit exceptions now support IP numbers as hostmask. [#723] 08/29 A Added InspIRCd11 vIdent support. [#684] diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c index 5e489300f..0e35986e0 100644 --- a/src/protocol/inspircd11.c +++ b/src/protocol/inspircd11.c @@ -134,7 +134,7 @@ IRCDCAPAB myIrcdcap[] = { { CAPAB_NOQUIT, /* NOQUIT */ 0, /* TSMODE */ - 0, /* UNCONNECT */ + 1, /* UNCONNECT */ 0, /* NICKIP */ 0, /* SJOIN */ 0, /* ZIP */ @@ -481,6 +481,7 @@ void moduleAddIRCDMsgs(void) { m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m); m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m); m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m); + m = createMessage("RSQUIT", anope_event_rsquit); addCoreMessage(IRCD,m); m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m); m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m); m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m); @@ -616,7 +617,7 @@ void inspircd_cmd_mode(char *source, char *dest, char *buf) return; } - send_cmd(source ? source : s_OperServ, "FMODE %s %u %s", dest, findchan(dest)->creation_time, buf); + send_cmd(source ? source : s_OperServ, "FMODE %s %u %s", dest, (unsigned int)findchan(dest)->creation_time, buf); } int anope_event_version(char *source, int ac, char **av) @@ -1268,6 +1269,20 @@ int anope_event_squit(char *source, int ac, char **av) return MOD_CONT; } +int anope_event_rsquit(char *source, int ac, char **av) +{ + if (ac < 1 || ac > 3) + return MOD_CONT; + + /* Horrible workaround to an insp bug (#) in how RSQUITs are sent - mark */ + if (ac > 1 && strcmp(ServerName, av[0]) == 0) + do_squit(source, ac - 1, av + 1); + else + do_squit(source, ac, av); + + return MOD_CONT; +} + int anope_event_quit(char *source, int ac, char **av) { if (ac != 1) @@ -1568,41 +1583,36 @@ int anope_event_capab(char *source, int ac, char **av) quitting = 1; return MOD_STOP; } - if (has_svsholdmod == 0) { - anope_cmd_global(s_OperServ, "SVSHOLD missing, Usage disabled until module is loaded."); - return MOD_CONT; - } - if (has_sajoinmod == 0) { - anope_cmd_global(s_OperServ, "SAJOIN missing, Usage disabled until module is loaded."); - return MOD_CONT; + if (has_svsholdmod == 0) { + anope_cmd_global(s_OperServ, "SVSHOLD missing, Usage disabled until module is loaded."); + } + if (has_sajoinmod == 0) { + anope_cmd_global(s_OperServ, "SAJOIN missing, Usage disabled until module is loaded."); } - if (has_sapartmod == 0) { - anope_cmd_global(s_OperServ, "SAPART missing, Usage disabled until module is loaded."); - return MOD_CONT; + if (has_sapartmod == 0) { + anope_cmd_global(s_OperServ, "SAPART missing, Usage disabled until module is loaded."); } - if (has_sanickmod == 0) { - anope_cmd_global(s_OperServ, "SANICK missing, Usage disabled until module is loaded."); - return MOD_CONT; + if (has_sanickmod == 0) { + anope_cmd_global(s_OperServ, "SANICK missing, Usage disabled until module is loaded."); } - if (has_chghostmod == 0) { - anope_cmd_global(s_OperServ, "CHGHOST missing, Usage disabled until module is loaded."); - return MOD_CONT; + if (has_chghostmod == 0) { + anope_cmd_global(s_OperServ, "CHGHOST missing, Usage disabled until module is loaded."); } - if (has_chgidentmod == 0) { - anope_cmd_global(s_OperServ, "CHGIDENT missing, Usage disabled until module is loaded."); - return MOD_CONT; + if (has_chgidentmod == 0) { + anope_cmd_global(s_OperServ, "CHGIDENT missing, Usage disabled until module is loaded."); } /* Generate a fake capabs parsing call so things like NOQUIT work * fine. It's ugly, but it works.... */ - argc = 5; - argv = scalloc(5, sizeof(char *)); + argc = 6; + argv = scalloc(6, sizeof(char *)); argv[0] = "NOQUIT"; argv[1] = "SSJ3"; argv[2] = "NICK2"; argv[3] = "VL"; argv[4] = "TLKEXT"; + argv[5] = "UNCONNECT"; capab_parse(argc, argv); } diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h index 79689ee16..d8023e811 100755 --- a/src/protocol/inspircd11.h +++ b/src/protocol/inspircd11.h @@ -131,3 +131,4 @@ int anope_event_sapart(char *source, int ac, char **av); int anope_event_version(char *source, int ac, char **av); int anope_event_opertype(char *source, int ac, char **av); int anope_event_idle(char* source, int ac, char **av); +int anope_event_rsquit(char *source, int ac, char **av); diff --git a/version.log b/version.log index 2f273c219..124613807 100644 --- a/version.log +++ b/version.log @@ -9,10 +9,14 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="19" VERSION_EXTRA="-svn" -VERSION_BUILD="1322" +VERSION_BUILD="1323" # $Log$ # +# BUILD : 1.7.19 (1323) +# BUGS : 692 +# NOTES : Added RSQUIT support to the InspIRCd 1.1 protocol module +# # BUILD : 1.7.19 (1322) # BUGS : 685 # NOTES : Applied a patch by Jilles which should fix SJOIN not always sending the correct TS @@ -23,11 +27,11 @@ VERSION_BUILD="1322" # # BUILD : 1.7.19 (1320) # BUGS : -# NOTES : +# NOTES : Commit of Changes from 1319 # # BUILD : 1.7.19 (1319) -# BUGS : -# NOTES : +# BUGS : 724 +# NOTES : Fixed the use of MODE instead of FMODE in the InspIRCd 1.1 protocol module # # BUILD : 1.7.19 (1318) # BUGS : 791 |