summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-12-19 17:42:17 +0000
committertrystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-12-19 17:42:17 +0000
commitada71328a984fa145ddb27c8e6f2ca80dbb9524e (patch)
tree8e6d6f3619f88c8a462f98d0b533a1330ffaf152 /src
parentfb2191240c3dc31d2068793357f0b4c2cf870a0c (diff)
BUILD : 1.7.6 (489) BUGS : 244, 246, 247, 248, 249, 250, 251, 252, 254, 255 NOTES : 1. In some cases READONLY was not respected, and data was saved. 2. Corrected a few mistakes in example.conf. 3. Wrong column type in tables.sql for nick alias status fiag. 4. listchans and listnicks work under Cygwin. 5. NickRegDelay no longer accepts negative values. 6. -is44 option not show if converter not built. 7. Removed #ifndef STREAMLINE from the code as its no longer set during build time 8. MS MAX LIMIT was set incorrectly 9. Segfault if USERDB enabled and tables does not exist 10. Provides clear message of SUPERADMIN is not enabled
git-svn-id: svn://svn.anope.org/anope/trunk@489 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@343 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/Makefile16
-rw-r--r--src/config.c2
-rw-r--r--src/init.c2
-rw-r--r--src/main.c26
-rw-r--r--src/mysql.c16
-rw-r--r--src/news.c12
-rw-r--r--src/nickserv.c4
-rw-r--r--src/operserv.c10
-rw-r--r--src/servers.c2
-rw-r--r--src/users.c6
10 files changed, 55 insertions, 41 deletions
diff --git a/src/Makefile b/src/Makefile
index 54929bf50..46d796985 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,20 +1,18 @@
MYSQL_OBJ = $(MYSQL:.c=.o)
RDB_OBJ = $(RDB:.c=.o)
+IRCD_OBJ = $(IRCDFILE:.c=.o)
OBJS = actions.o base64.o botserv.o channels.o chanserv.o commands.o compat.o converter.o \
config.o datafiles.o encrypt.o helpserv.o hostserv.o init.o language.o list.o log.o mail.o main.o \
- memory.o memoserv.o messages.o misc.o modules.o news.o nickserv.o operserv.o \
- process.o proxy.o send.o servers.o sessions.o slist.o sockutil.o \
- timeout.o users.o dreamforge.o bahamut.o unreal31.o ultimate2.o ultimate3.o \
- hybrid.o ptlink.o viagra.o rageircd.o unreal32.o solidircd.o \
- $(VSNPRINTF_O) $(RDB_OBJ) $(MYSQL_OBJ)
+ memory.o memoserv.o messages.o misc.o modules.o news.o nickserv.o operserv.o \
+ process.o proxy.o send.o servers.o sessions.o slist.o sockutil.o \
+ timeout.o users.o \
+ $(VSNPRINTF_O) $(RDB_OBJ) $(MYSQL_OBJ) $(IRCD_OBJ)
SRCS = actions.c base64.c botserv.c channels.c chanserv.c commands.c compat.c converter.c \
config.c datafiles.c encrypt.c helpserv.c hostserv.c init.c language.c list.c log.c mail.c main.c \
memory.c memoserv.c messages.c misc.c modules.c news.c nickserv.c operserv.c \
process.c proxy.c send.c servers.c sessions.c slist.c sockutil.c \
- dreamforge.c bahamut.c unreal31.c ultimate2.c ultimate3.c \
- hybrid.c ptlink.c viagra.c rageircd.c unreal32.c solidircd.c \
timeout.c users.c \
- $(VSNPRINTF_C) $(RDB) $(MYSQL)
+ $(VSNPRINTF_C) $(RDB) $(MYSQL) $(IRCDFILE)
INCLUDES = ../include/commands.h ../include/defs.h ../include/language.h \
../include/pseudo.h ../include/sysconf.h ../include/config.h \
@@ -31,7 +29,7 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'INCLUDEDIR=${INCLUDEDIR}' 'RM=${RM}' 'CP=${CP}' \
'TOUCH=${TOUCH}' 'SHELL=${SHELL}' 'DATDEST=${DATDEST}' \
'RUNGROUP=${RUNGROUP}' 'MODULE_PATH=${MODULE_PATH}' 'MYSQL=${MYSQL}'\
- 'RDB=${RDB}'
+ 'RDB=${RDB}' 'IRCDFILE=${IRCDFILE}'
.c.o:
$(CC) $(CFLAGS) -I../include/ -c $<
diff --git a/src/config.c b/src/config.c
index 5e1f69591..5a68e0d99 100644
--- a/src/config.c
+++ b/src/config.c
@@ -526,7 +526,7 @@ Directive directives[] = {
{"Numeric", {{PARAM_POSINT, PARAM_RELOAD, &Numeric}}},
{"PreNickServDB", {{PARAM_STRING, PARAM_RELOAD, &PreNickDBName}}},
{"NSEmailReg", {{PARAM_SET, PARAM_RELOAD, &NSEmailReg}}},
- {"NickRegDelay", {{PARAM_INT, PARAM_RELOAD, &NickRegDelay}}},
+ {"NickRegDelay", {{PARAM_POSINT, PARAM_RELOAD, &NickRegDelay}}},
{"NickServName", {{PARAM_STRING, 0, &s_NickServ},
{PARAM_STRING, 0, &desc_NickServ}}},
{"NickServAlias", {{PARAM_STRING, 0, &s_NickServAlias},
diff --git a/src/init.c b/src/init.c
index f8094bc16..5b4f02536 100644
--- a/src/init.c
+++ b/src/init.c
@@ -350,7 +350,9 @@ static int parse_options(int ac, char **av)
fprintf(stdout, "-forceload -forceload\n");
fprintf(stdout, "-readonly -readonly\n");
fprintf(stdout, "-noexpire -noexpire\n");
+#ifdef IS44_CONVERTER
fprintf(stdout, "-is44 -is44\n");
+#endif
fprintf(stdout, "-version -version\n");
fprintf(stdout, "-help -help\n");
fprintf(stdout, "-log -log logfilename\n");
diff --git a/src/main.c b/src/main.c
index 6dc3b7a62..e4bb9ccf6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -126,9 +126,7 @@ extern void expire_all(void)
waiting = -27;
expire_szlines();
}
-#ifndef STREAMLINED
expire_exceptions();
-#endif
#ifdef USE_THREADS
if (ProxyDetect)
proxy_expire();
@@ -241,8 +239,10 @@ static void services_restart(void)
**/
void do_restart_services(void)
{
- expire_all();
- save_databases();
+ if (!readonly) {
+ expire_all();
+ save_databases();
+ }
services_restart();
exit(1);
}
@@ -446,17 +446,25 @@ int main(int ac, char **av, char **envp)
else
progname = av[0];
- /* Were we run under "listnicks" or "listchans"? Do appropriate stuff
- * if so. */
- if (strcmp(progname, "listnicks") == 0) {
+#ifdef __CYGWIN__
+ if (strcmp(progname, "listnicks.exe") == 0)
+#else
+ if (strcmp(progname, "listnicks") == 0)
+#endif
+ {
do_listnicks(ac, av);
return 0;
- } else if (strcmp(progname, "listchans") == 0) {
+ }
+#ifdef __CYGWIN__
+ else if (strcmp(progname, "listchans.exe") == 0)
+#else
+ else if (strcmp(progname, "listchans") == 0)
+#endif
+ {
do_listchans(ac, av);
return 0;
}
-
/* Initialization stuff. */
if ((i = init(ac, av)) != 0)
return i;
diff --git a/src/mysql.c b/src/mysql.c
index 707515113..c426389e5 100644
--- a/src/mysql.c
+++ b/src/mysql.c
@@ -900,6 +900,7 @@ void db_mysql_load_bs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
@@ -936,6 +937,7 @@ void db_mysql_load_hs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
@@ -970,6 +972,7 @@ void db_mysql_load_news(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
nnews = mysql_num_rows(mysql_res);
@@ -1009,6 +1012,7 @@ void db_mysql_load_exceptions(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
nexceptions = mysql_num_rows(mysql_res);
@@ -1044,6 +1048,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if ((mysql_row = mysql_fetch_row(mysql_res))) {
@@ -1065,6 +1070,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
slist_setcapacity(&akills, akc);
@@ -1089,6 +1095,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql statement: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
while ((mysql_row = mysql_fetch_row(mysql_res))) {
@@ -1107,6 +1114,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql statement: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
while ((mysql_row = mysql_fetch_row(mysql_res))) {
@@ -1125,6 +1133,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql statement: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
while ((mysql_row = mysql_fetch_row(mysql_res))) {
@@ -1143,6 +1152,7 @@ void db_mysql_load_os_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
@@ -1183,6 +1193,7 @@ void db_mysql_load_cs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
@@ -1242,6 +1253,7 @@ void db_mysql_load_cs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
res = mysql_store_result(mysql);
n_levels = mysql_num_rows(res);
@@ -1260,6 +1272,7 @@ void db_mysql_load_cs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
res = mysql_store_result(mysql);
j = 0;
@@ -1287,6 +1300,7 @@ void db_mysql_load_cs_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
res = mysql_store_result(mysql);
j = 0;
@@ -1415,6 +1429,7 @@ void db_mysql_load_ns_req_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
@@ -1451,6 +1466,7 @@ void db_mysql_load_ns_dbase(void)
if (db_mysql_query(sqlcmd)) {
log_perror("Can't create sql query: %s", sqlcmd);
db_mysql_error(MYSQL_WARNING, "query");
+ return;
}
mysql_res = mysql_store_result(mysql);
if (mysql_num_rows(mysql_res) == 0) {
diff --git a/src/news.c b/src/news.c
index 868be1993..af3375c34 100644
--- a/src/news.c
+++ b/src/news.c
@@ -428,13 +428,15 @@ static void do_news_add(User * u, int16 type, int *msgs,
snprintf(buf, sizeof(buf), "%sNEWS", typename);
syntax_error(s_OperServ, u, buf, msgs[MSG_ADD_SYNTAX]);
} else {
+ if (readonly) {
+ notice_lang(s_OperServ, u, READ_ONLY_MODE);
+ return;
+ }
int n = add_newsitem(u, text, type);
if (n < 0)
notice_lang(s_OperServ, u, msgs[MSG_ADD_FULL]);
else
notice_lang(s_OperServ, u, msgs[MSG_ADDED], n);
- if (readonly)
- notice_lang(s_OperServ, u, READ_ONLY_MODE);
}
}
@@ -488,6 +490,10 @@ static void do_news_del(User * u, int16 type, int *msgs,
snprintf(buf, sizeof(buf), "%sNEWS", typename);
syntax_error(s_OperServ, u, buf, msgs[MSG_DEL_SYNTAX]);
} else {
+ if (readonly) {
+ notice_lang(s_OperServ, u, READ_ONLY_MODE);
+ return;
+ }
if (stricmp(text, "ALL") != 0) {
int num = atoi(text);
if (num > 0 && del_newsitem(num, type)) {
@@ -505,8 +511,6 @@ static void do_news_del(User * u, int16 type, int *msgs,
else
notice_lang(s_OperServ, u, msgs[MSG_DEL_NONE]);
}
- if (readonly)
- notice_lang(s_OperServ, u, READ_ONLY_MODE);
}
}
diff --git a/src/nickserv.c b/src/nickserv.c
index 27dfc31ef..d0a53bd72 100644
--- a/src/nickserv.c
+++ b/src/nickserv.c
@@ -4015,11 +4015,9 @@ static int do_ghost(User * u)
char buf[NICKMAX + 32];
snprintf(buf, sizeof(buf), "GHOST command used by %s",
u->nick);
-#ifndef STREAMLINED
if (LimitSessions) {
del_session(u2->host);
}
-#endif
kill_user(s_NickServ, nick, buf);
notice_lang(s_NickServ, u, NICK_GHOST_KILLED, nick);
} else {
@@ -4037,11 +4035,9 @@ static int do_ghost(User * u)
char buf[NICKMAX + 32];
snprintf(buf, sizeof(buf), "GHOST command used by %s",
u->nick);
-#ifndef STREAMLINED
if (LimitSessions) {
del_session(u2->host);
}
-#endif
kill_user(s_NickServ, nick, buf);
notice_lang(s_NickServ, u, NICK_GHOST_KILLED, nick);
} else {
diff --git a/src/operserv.c b/src/operserv.c
index 247e70704..176eed93b 100644
--- a/src/operserv.c
+++ b/src/operserv.c
@@ -190,10 +190,8 @@ void moduleAddOperServCmds(void) {
c = createCommand("QUIT", do_os_quit, is_services_admin,OPER_HELP_QUIT, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("SHUTDOWN", do_shutdown, is_services_admin,OPER_HELP_SHUTDOWN, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("RESTART", do_restart, is_services_admin,OPER_HELP_RESTART, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
-#ifndef STREAMLINED
c = createCommand("SESSION", do_session, is_services_admin,OPER_HELP_SESSION, -1,-1,-1, -1); addCoreCommand(OPERSERV,c);
c = createCommand("EXCEPTION", do_exception, is_services_admin,OPER_HELP_EXCEPTION, -1,-1,-1, -1); addCoreCommand(OPERSERV,c);
-#endif
c = createCommand("CHANLIST", do_chanlist, is_services_admin,OPER_HELP_CHANLIST, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("USERLIST", do_userlist, is_services_admin,OPER_HELP_USERLIST, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
c = createCommand("CACHE", do_cache, is_services_admin,OPER_HELP_CACHE, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
@@ -876,7 +874,6 @@ int nick_is_services_oper(NickCore * nc)
void check_clones(User * user)
{
-#ifndef STREAMLINED
int i, clone_count;
long last_time;
@@ -925,7 +922,6 @@ void check_clones(User * user)
kill_user(s_OperServ, user->nick, "Clone kill");
}
}
-#endif /* !STREAMLINED */
}
/*************************************************************************/
@@ -4617,14 +4613,16 @@ static int do_set(User * u)
* Rob
**/
} else if (stricmp(option, "SUPERADMIN") == 0) {
- if (SuperAdmin && (stricmp(setting, "on") == 0)) {
+ if (!SuperAdmin) {
+ notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_NOT_ENABLED);
+ } else if (stricmp(setting, "on") == 0) {
u->isSuperAdmin = 1;
notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_ON);
alog("%s: %s is a SuperAdmin ", s_OperServ, u->nick);
anope_cmd_global(s_OperServ,
getstring2(NULL, OPER_SUPER_ADMIN_WALL_ON),
u->nick);
- } else if (SuperAdmin && (stricmp(setting, "off") == 0)) {
+ } else if (stricmp(setting, "off") == 0) {
u->isSuperAdmin = 0;
notice_lang(s_OperServ, u, OPER_SUPER_ADMIN_OFF);
alog("%s: %s is no longer a SuperAdmin", s_OperServ, u->nick);
diff --git a/src/servers.c b/src/servers.c
index b83dea124..1389d3fd9 100644
--- a/src/servers.c
+++ b/src/servers.c
@@ -160,11 +160,9 @@ static void delete_server(Server * serv, const char *quitreason)
na->last_quit =
(quitreason ? sstrdup(quitreason) : NULL);
}
-#ifndef STREAMLINED
if (LimitSessions) {
del_session(u->host);
}
-#endif
delete_user(u);
}
u = unext;
diff --git a/src/users.c b/src/users.c
index e807cb012..1417fd936 100644
--- a/src/users.c
+++ b/src/users.c
@@ -489,11 +489,9 @@ User *do_nick(const char *source, char *nick, char *username, char *host,
if (check_szline(nick, ipbuf))
return NULL;
}
-#ifndef STREAMLINED
/* Now check for session limits */
if (LimitSessions && !add_session(nick, host))
return NULL;
-#endif
/* And finally, for proxy ;) */
#ifdef USE_THREADS
@@ -722,11 +720,9 @@ void do_quit(const char *source, int ac, char **av)
free(na->last_quit);
na->last_quit = *av[0] ? sstrdup(av[0]) : NULL;
}
-#ifndef STREAMLINED
if (LimitSessions) {
del_session(user->host);
}
-#endif
delete_user(user);
}
@@ -760,11 +756,9 @@ void do_kill(char *nick, char *msg)
na->last_quit = *msg ? sstrdup(msg) : NULL;
}
-#ifndef STREAMLINED
if (LimitSessions) {
del_session(user->host);
}
-#endif
delete_user(user);
}