#include "serno.h"
#include "sslproc.h"
-/*
- * Try and find the correct name to use with getrlimit() for setting the max.
- * number of files allowed to be open by this process.
- */
-int _charybdis_data_version = CHARYBDIS_DV;
-
-extern int ServerRunning;
-extern struct LocalUser meLocalUser;
-extern char **myargv;
-
-int maxconnections;
-
/* /quote set variables */\r
struct SetOptions GlobalSetOptions;
\r
/* server info set from ircd.conf */\r
struct server_info ServerInfo;\r
/* admin info set from ircd.conf */\r
-struct admin_info AdminInfo;\r
-\r
+struct admin_info AdminInfo;
+
struct Counter Count;\r
struct ServerStatistics ServerStats;
+int maxconnections;
+struct timeval SystemTime;
+struct Client me; /* That's me */\r
+struct LocalUser meLocalUser; /* That's also part of me */
+
+rb_dlink_list lclient_list = { NULL, NULL, 0 };\r
+rb_dlink_list global_client_list = { NULL, NULL, 0 };\r
+rb_dlink_list global_channel_list = { NULL, NULL, 0 };\r
+\r
+rb_dlink_list unknown_list; /* unknown clients ON this server only */\r
+rb_dlink_list serv_list; /* local servers to this server ONLY */\r
+rb_dlink_list global_serv_list; /* global servers on the network */\r
+rb_dlink_list local_oper_list; /* our opers, duplicated in lclient_list */\r
+rb_dlink_list oper_list; /* network opers */
+
+time_t startup_time;\r
+\r
+int default_server_capabs = CAP_MASK;\r
+\r
+int splitmode;\r
+int splitchecking;\r
+int split_users;\r
+int split_servers;\r
+int eob_count;\r
+\r
+unsigned long initialVMTop = 0; /* top of virtual memory at init */\r
+const char *logFileName = LPATH;\r
+const char *pidFileName = PPATH;
+
+char **myargv;
+int dorehash = 0;\r
+int dorehashbans = 0;\r
+int doremotd = 0;\r
+int kline_queued = 0;\r
+int server_state_foreground = 0;\r
+int opers_see_all_users = 0;\r
int ssl_ok = 0;\r
-int zlib_ok = 1;
+int zlib_ok = 1;\r
+\r
+int testing_conf = 0;\r
+\r
+struct config_channel_entry ConfigChannel;\r
+rb_bh *channel_heap;\r
+rb_bh *ban_heap;\r
+rb_bh *topic_heap;\r
+rb_bh *member_heap;\r
+\r
+rb_bh *client_heap = NULL;\r
+rb_bh *lclient_heap = NULL;\r
+rb_bh *pclient_heap = NULL;\r
+\r
+char current_uid[IDLEN];\r
+\r
+/* patricia */\r
+rb_bh *prefix_heap;\r
+rb_bh *node_heap;\r
+rb_bh *patricia_heap;\r
+\r
+rb_bh *linebuf_heap;\r
+\r
+rb_bh *dnode_heap;
/*
* print_startup - print startup information
static void
ircd_die_cb(const char *str)
{
- /* Try to get the message out to currently logged in operators. */
- sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Server panic! %s", str);
- inotice("server panic: %s", str);
+ if(str != NULL)\r
+ {
+ /* Try to get the message out to currently logged in operators. */
+ sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Server panic! %s", str);
+ inotice("server panic: %s", str);
+ }
unlink(pidFileName);
exit(EXIT_FAILURE);
GlobalSetOptions.maxclients = ServerInfo.default_max_clients;\r
\r
- if(GlobalSetOptions.maxclients > (maxconnections - MAX_BUFFER))\r
+ if(GlobalSetOptions.maxclients > (maxconnections - MAX_BUFFER) || (GlobalSetOptions.maxclients <= 0))\r
GlobalSetOptions.maxclients = maxconnections - MAX_BUFFER;
GlobalSetOptions.autoconn = 1;
*/
setup_corefile();
- ServerRunning = 0;
/* It ain't random, but it ought to be a little harder to guess */
srand(SystemTime.tv_sec ^ (SystemTime.tv_usec | (getpid() << 20)));
memset(&me, 0, sizeof(me));
if(splitmode)
check_splitmode_ev = rb_event_add("check_splitmode", check_splitmode, NULL, 2);
- ServerRunning = 1;
-
print_startup(getpid());
- rb_lib_loop(250);
+ rb_lib_loop(0);
return 0;
}