summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes2
-rw-r--r--include/extern.h1
-rw-r--r--src/actions.c4
-rw-r--r--src/bahamut.c1
-rw-r--r--src/channels.c3
-rw-r--r--src/dreamforge.c1
-rw-r--r--src/hybrid.c2
-rw-r--r--src/messages.c4
-rw-r--r--src/news.c9
-rw-r--r--src/ptlink.c2
-rw-r--r--src/rageircd.c2
-rw-r--r--src/ultimate2.c1
-rw-r--r--src/ultimate3.c2
-rw-r--r--src/unreal31.c2
-rw-r--r--src/unreal32.c1
-rw-r--r--src/users.c9
-rw-r--r--src/viagra.c1
-rw-r--r--version.log6
18 files changed, 45 insertions, 8 deletions
diff --git a/Changes b/Changes
index 88dd53a0e..756f7c8c4 100644
--- a/Changes
+++ b/Changes
@@ -26,6 +26,7 @@ Provided by Trystan <trystan@nomadirc.net> - 2004
09/07 A Ircd CHANMODE now trapped and stored. [ #00]
08/23 A New protocol independent design (aka anope-capab). [ #00]
08/28 A New IRCD document for adding new ircd support to new design. [ #00]
+10/07 F Fixed TSMODE ircds that don't stay this in their CAPABA [ #00]
10/05 F Cleaned up how OS/CS CLEAR MODES works [ #00]
09/27 F Verbose message for vident. [#173]
09/27 F Check and trap for forbidden nicks on HS. [#172]
@@ -48,6 +49,7 @@ Provided by Trystan <trystan@nomadirc.net> - 2004
Provided by DrStein <gacevedo@anope.org> - 2004
10/05 A CS/NS INFO shows the expire time. [ #00]
10/05 A NS GLIST shows the expire time. [ #00]
+10/07 F NEWS reordering issue [ #00]
10/05 F NS GLIST allows the owner of the nick to use the nickname param. [ #00]
09/17 F Fixed MySQL error, whereby checks are only done if mysql is on. [ #00]
09/14 F Fixed /os MODE by joining nested ifs into one. [ #00]
diff --git a/include/extern.h b/include/extern.h
index ae727cdcb..e217e5a88 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -26,6 +26,7 @@ E IRCDVar ircd[];
E IRCDCAPAB ircdcap[];
E const char flood_mode_char_set[];
E const char flood_mode_char_remove[];
+E int UseTSMODE; /* hack to get around bahamut clones that don't send TSMODE */
/**** actions.c ****/
diff --git a/src/actions.c b/src/actions.c
index 1cfcdf2e1..a0750ed00 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -24,6 +24,10 @@ void bad_password(User * u)
{
time_t now = time(NULL);
+ if (!u) {
+ return;
+ }
+
if (!BadPassLimit)
return;
diff --git a/src/bahamut.c b/src/bahamut.c
index e9e395293..88b8101ee 100644
--- a/src/bahamut.c
+++ b/src/bahamut.c
@@ -23,6 +23,7 @@ const char version_protocol[] = "BahamutIRCd 1.4.*/1.8.*";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = "+j"; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = "-j"; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0; /* does send TSMODE but if it doesn't means it won't so this is disabled */
IRCDVar ircd[] = {
{"BahamutIRCd 1.4.*/1.8.*", /* ircd name */
diff --git a/src/channels.c b/src/channels.c
index a2f9b83ac..c1510fe7f 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -866,7 +866,8 @@ void do_cmode(const char *source, int ac, char **av)
if (ircdcap->tsmode) {
/* TSMODE for bahamut - leave this code out to break MODEs. -GD */
- if (uplink_capab & ircdcap->tsmode) {
+ /* if they don't send it in CAPAB check if we just want to enable it */
+ if (uplink_capab & ircdcap->tsmode || UseTSMODE) {
for (i = 0; i < strlen(av[1]); i++) {
if (!isdigit(av[1][i]))
break;
diff --git a/src/dreamforge.c b/src/dreamforge.c
index 43cd4532a..505deb9c8 100644
--- a/src/dreamforge.c
+++ b/src/dreamforge.c
@@ -21,6 +21,7 @@ const char version_protocol[] = "DreamForge 4.6.7";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"DreamForge 4.6.7", /* ircd name */
diff --git a/src/hybrid.c b/src/hybrid.c
index 637c05db0..83b827f4b 100644
--- a/src/hybrid.c
+++ b/src/hybrid.c
@@ -21,7 +21,7 @@ const char version_protocol[] = "Hybrid IRCd 7.0";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
-
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"HybridIRCd 7.*", /* ircd name */
diff --git a/src/messages.c b/src/messages.c
index 8b4c4f992..c9408a4ac 100644
--- a/src/messages.c
+++ b/src/messages.c
@@ -112,6 +112,10 @@ int m_privmsg(char *source, char *receiver, char *msg)
ChannelInfo *ci;
User *u;
+ if (!source || !*source) {
+ return MOD_CONT;
+ }
+
u = finduser(source);
if (!u) {
diff --git a/src/news.c b/src/news.c
index 0b5ab796b..44195a985 100644
--- a/src/news.c
+++ b/src/news.c
@@ -1,4 +1,4 @@
-
+/* News functions.
/* News functions.
*
* (C) 2003 Anope Team
@@ -496,8 +496,10 @@ static void do_news_del(User * u, int16 type, int *msgs,
if (num > 0 && del_newsitem(num, type)) {
notice_lang(s_OperServ, u, msgs[MSG_DELETED], num);
/* Reset the order - #0000397 */
- for (i = 0; i < nnews; i++)
- news[i].num = i + 1;
+ for (i = 0; i < nnews; i++) {
+ if ((news[i].type == type) && (news[i].num > num))
+ news[i].num--;
+ }
} else
notice_lang(s_OperServ, u, msgs[MSG_DEL_NOT_FOUND], num);
} else {
@@ -537,3 +539,4 @@ static int del_newsitem(int num, short type)
/*************************************************************************/
+
diff --git a/src/ptlink.c b/src/ptlink.c
index acab8a7a0..3ffa1bc50 100644
--- a/src/ptlink.c
+++ b/src/ptlink.c
@@ -21,7 +21,7 @@ const char version_protocol[] = "PTlink 6.14.5+";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */
-
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"PTlinkIRCd 6.14.*", /* ircd name */
diff --git a/src/rageircd.c b/src/rageircd.c
index 555cf58db..66299805b 100644
--- a/src/rageircd.c
+++ b/src/rageircd.c
@@ -21,6 +21,7 @@ const char version_protocol[] = "RageIRCd 2.0.x";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 1; /* Rage beta 6 does not send TSMODE but uses it so we do this to enable it */
IRCDVar ircd[] = {
@@ -718,6 +719,7 @@ void anope_cmd_svinfo()
void anope_cmd_capab()
{
+ /* future versions will support TSMODE */
send_cmd(NULL, "CAPAB BURST UNCONNECT SSJ3 SN2 VHOST");
}
diff --git a/src/ultimate2.c b/src/ultimate2.c
index 267c60ca3..ec6e8896d 100644
--- a/src/ultimate2.c
+++ b/src/ultimate2.c
@@ -21,6 +21,7 @@ const char version_protocol[] = "UltimateIRCd 2.8.2+";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"UltimateIRCd 2.8.*", /* ircd name */
diff --git a/src/ultimate3.c b/src/ultimate3.c
index dcde5b3a3..530266ac7 100644
--- a/src/ultimate3.c
+++ b/src/ultimate3.c
@@ -22,6 +22,8 @@ const char version_protocol[] = "UltimateIRCd 3.0.0.a26+";
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
+
IRCDVar ircd[] = {
{"UltimateIRCd 3.0.*", /* ircd name */
diff --git a/src/unreal31.c b/src/unreal31.c
index 89aca79d6..90ad7f240 100644
--- a/src/unreal31.c
+++ b/src/unreal31.c
@@ -24,6 +24,8 @@ const char version_protocol[] = "UnrealIRCd 3.1.1+";
const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
+
IRCDVar ircd[] = {
{"UnrealIRCd 3.1.x", /* ircd name */
"+oS", /* nickserv mode */
diff --git a/src/unreal32.c b/src/unreal32.c
index 43054628e..2198d1a5a 100644
--- a/src/unreal32.c
+++ b/src/unreal32.c
@@ -23,6 +23,7 @@ const char version_protocol[] = "UnrealIRCd 3.2+";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"UnrealIRCd 3.2.x", /* ircd name */
diff --git a/src/users.c b/src/users.c
index b218c765a..bd15f8290 100644
--- a/src/users.c
+++ b/src/users.c
@@ -62,7 +62,14 @@ static User *new_user(const char *nick)
static void change_user_nick(User * user, const char *nick)
{
User **list;
- int is_same = (!stricmp(user->nick, nick) ? 1 : 0);
+ int is_same;
+
+ /* Sanity check to make sure we don't segfault */
+ if (!user || !nick || !*nick) {
+ return;
+ }
+
+ is_same = (!stricmp(user->nick, nick) ? 1 : 0);
if (user->prev)
user->prev->next = user->next;
diff --git a/src/viagra.c b/src/viagra.c
index 260915c09..ff0038137 100644
--- a/src/viagra.c
+++ b/src/viagra.c
@@ -21,6 +21,7 @@ const char version_protocol[] = "ViagraIRCd 1.3.x";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
+int UseTSMODE = 0;
IRCDVar ircd[] = {
{"ViagraIRCd 1.3.*", /* ircd name */
diff --git a/version.log b/version.log
index f4f734261..ad1e47b9a 100644
--- a/version.log
+++ b/version.log
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="5"
-VERSION_BUILD="376"
+VERSION_BUILD="378"
# $Log$
#
+# BUILD : 1.7.5 (378)
+# BUGS : N/A
+# NOTES : News reodering - DrStein, TSMODE issues - TSL, NULL crash fixes - TSL
+#
# BUILD : 1.7.5 (376)
# BUGS : N/A
# NOTES : CS INFO - DrStein, init.c typo - DrStein, Bahamut +j support - TSL, more protocol clean up