#endif
struct CitContext *ContextList = NULL;
+struct CitContext* next_session = NULL;
char *unique_session_numbers;
int ScheduledShutdown = 0;
int do_defrag = 0;
else {
for (ptr = ContextList; ptr != NULL; ptr = ptr->next) {
if (ptr->next == con) {
+ /* See fair scheduling in sysdep.c */
+ if (next_session == ptr->next)
+ next_session = ptr->next->next;
ToFree = ptr->next;
ptr->next = ptr->next->next;
--num_sessions;
/*
- * returns an asterisk if there are any express messages waiting,
+ * returns an asterisk if there are any instant messages waiting,
* space otherwise.
*/
char CtdlCheckExpress(void) {
config.c_nodename, config.c_maxsessions);
}
else {
- cprintf("%d %s Citadel/UX server ready.\n",
+ cprintf("%d %s Citadel server ready.\n",
CIT_OK, config.c_nodename);
}
}
time(&CC->lastcmd);
memset(cmdbuf, 0, sizeof cmdbuf); /* Clear it, just in case */
if (client_gets(cmdbuf) < 1) {
- lprintf(CTDL_ERR, "Client socket is broken. Ending session.\n");
+ lprintf(CTDL_ERR, "Client socket is broken; ending session\n");
CC->kill_me = 1;
return;
}
}
if (!strncasecmp(cmdbuf,"NOOP",4)) {
- cprintf("%d%cok\n",CIT_OK,CtdlCheckExpress());
+ cprintf("%d%cok\n", CIT_OK, CtdlCheckExpress() );
}
else if (!strncasecmp(cmdbuf,"QNOP",4)) {
}
else if (!strncasecmp(cmdbuf,"QUIT",4)) {
- cprintf("%d Goodbye.\n",CIT_OK);
+ cprintf("%d Goodbye.\n", CIT_OK);
CC->kill_me = 1;
}
else if (!strncasecmp(cmdbuf,"LOUT",4)) {
if (CC->logged_in) logout(CC);
- cprintf("%d logged out.\n",CIT_OK);
+ cprintf("%d logged out.\n", CIT_OK);
}
else if (!strncasecmp(cmdbuf,"USER",4)) {
}
else if (!DLoader_Exec_Cmd(cmdbuf)) {
- cprintf("%d Unrecognized or unsupported command.\n", ERROR + CMD_NOT_SUPPORTED);
+ cprintf("%d Unrecognized or unsupported command.\n",
+ ERROR + CMD_NOT_SUPPORTED);
}
- /* Run any after-each-command outines registered by modules */
+ /* Run any after-each-command routines registered by modules */
PerformSessionHooks(EVT_CMD);
}
+
+
+/*
+ * This loop performs all asynchronous functions.
+ */
+void do_async_loop(void) {
+ PerformSessionHooks(EVT_ASYNC);
+}