Cleaned a few warnings about deprecated functions.
[citadel.git] / citadel / citserver.c
index 13a40afc20ab02ec6f876bde253e715f7a281f13..d0c7007ff37cdd020b21e8c76f7752f7c6a57d5f 100644 (file)
@@ -73,6 +73,7 @@
 #include "policy.h"
 #include "control.h"
 #include "euidindex.h"
+#include "context.h"
 #include "svn_revision.h"
 
 #ifndef HAVE_SNPRINTF
@@ -82,8 +83,6 @@
 #include "ctdl_module.h"
 
 
-struct CitContext *ContextList = NULL;
-struct CitContext* next_session = NULL;
 char *unique_session_numbers;
 int ScheduledShutdown = 0;
 time_t server_startup_time;
@@ -251,46 +250,6 @@ void master_cleanup(int exitcode) {
 
 
 
-/*
- * Terminate a session.
- */
-void RemoveContext (struct CitContext *con)
-{
-       if (con==NULL) {
-               CtdlLogPrintf(CTDL_ERR,
-                       "WARNING: RemoveContext() called with NULL!\n");
-               return;
-       }
-       CtdlLogPrintf(CTDL_DEBUG, "RemoveContext() session %d\n", con->cs_pid);
-
-       /* Run any cleanup routines registered by loadable modules.
-        * Note: We have to "become_session()" because the cleanup functions
-        *       might make references to "CC" assuming it's the right one.
-        */
-       become_session(con);
-       logout();
-       PerformSessionHooks(EVT_STOP);
-       become_session(NULL);
-
-       CtdlLogPrintf(CTDL_NOTICE, "[%3d] Session ended.\n", con->cs_pid);
-
-       /* If the client is still connected, blow 'em away. */
-       CtdlLogPrintf(CTDL_DEBUG, "Closing socket %d\n", con->client_socket);
-       close(con->client_socket);
-
-       /* If using AUTHMODE_LDAP, free the DN */
-       if (con->ldap_dn) {
-               free(con->ldap_dn);
-               con->ldap_dn = NULL;
-       }
-
-       CtdlLogPrintf(CTDL_DEBUG, "Done with RemoveContext()\n");
-}
-
-
-
-
-
 /*
  * cmd_info()  -  tell the client about this server
  */
@@ -681,8 +640,8 @@ void cmd_emsg(char *mname)
  * user also knows the rooms.
  */
 void GenerateRoomDisplay(char *real_room,
-                       struct CitContext *viewed,
-                       struct CitContext *viewer) {
+                       CitContext *viewed,
+                       CitContext *viewer) {
 
        int ra;
 
@@ -749,7 +708,7 @@ int CtdlAccessCheck(int required_level) {
 void cmd_term(char *cmdbuf)
 {
        int session_num;
-       struct CitContext *ccptr;
+       CitContext *ccptr;
        int found_it = 0;
        int allowed = 0;
 
@@ -873,6 +832,7 @@ void cmd_down(char *argbuf) {
        {
                cprintf(Reply, CIT_OK + SERVER_SHUTTING_DOWN); 
        }
+       CC->kill_me = 1; /* Even the DOWN command has to follow correct proceedure when disconecting */
        CtdlThreadStopAll();
 }
 
@@ -941,7 +901,7 @@ void cmd_asyn(char *argbuf)
  * RFC 1725 et al specify a PID to be placed in front of the nonce.
  * Quoth BTX: That would be stupid.
  */
-void generate_nonce(struct CitContext *con) {
+void generate_nonce(CitContext *con) {
        struct timeval tv;
 
        memset(con->cs_nonce, NONCE_SIZE, 0);
@@ -957,7 +917,7 @@ void generate_nonce(struct CitContext *con) {
 /*
  * Back-end function for starting a session
  */
-void begin_session(struct CitContext *con)
+void begin_session(CitContext *con)
 {
        socklen_t len;
        struct sockaddr_in sin;
@@ -1080,7 +1040,7 @@ void cmd_quit(char *argbuf)
 void cmd_lout(char *argbuf)
 {
        if (CC->logged_in) 
-               logout();
+               CtdlUserLogout();
        cprintf("%d logged out.\n", CIT_OK);
 }
 
@@ -1168,23 +1128,25 @@ void do_async_loop(void) {
 
 CTDL_MODULE_INIT(citserver)
 {
-       CtdlRegisterProtoHook(cmd_noop, "NOOP", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_qnop, "QNOP", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_quit, "QUIT", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_lout, "LOUT", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_asyn, "ASYN", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_info, "INFO", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_mesg, "MESG", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_emsg, "EMSG", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_echo, "ECHO", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_more, "MORE", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_iden, "IDEN", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_ipgm, "IPGM", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_term, "TERM", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_down, "DOWN", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_halt, "HALT", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_scdn, "SCDN", "Autoconverted. TODO: document me.");
-       CtdlRegisterProtoHook(cmd_time, "TIME", "Autoconverted. TODO: document me.");
+       if (!threading) {
+               CtdlRegisterProtoHook(cmd_noop, "NOOP", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_qnop, "QNOP", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_quit, "QUIT", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_lout, "LOUT", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_asyn, "ASYN", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_info, "INFO", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_mesg, "MESG", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_emsg, "EMSG", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_echo, "ECHO", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_more, "MORE", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_iden, "IDEN", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_ipgm, "IPGM", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_term, "TERM", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_down, "DOWN", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_halt, "HALT", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_scdn, "SCDN", "Autoconverted. TODO: document me.");
+               CtdlRegisterProtoHook(cmd_time, "TIME", "Autoconverted. TODO: document me.");
+       }
         /* return our Subversion id for the Log */
        return "$Id$";
 }