]> code.citadel.org Git - citadel.git/blobdiff - citadel/context.c
Temporarily disable terminate_stuck_sessions() because it is running at unexpected...
[citadel.git] / citadel / context.c
index 70657537ec02e20248dfb7467b4f1005d67fa037..2a522066aa4cfb5a273fa4016f13ab3919d09910 100644 (file)
@@ -306,8 +306,19 @@ void terminate_idle_sessions(void)
                syslog(LOG_INFO, "Didn't terminate %d protected idle sessions;\n", killed);
 }
 
+
+/*
+ * During shutdown, close the sockets of any sessions still connected.
+ */
 void terminate_stuck_sessions(void)
 {
+
+       return;
+       /* FIXME this function has been disabled because it is somehow being
+        * called at times other than server shutdown, which is throwing all
+        * the users off.  EPIC FAIL!!!
+        */
+
        CitContext *ccptr;
        int killed = 0;
 
@@ -315,14 +326,16 @@ void terminate_stuck_sessions(void)
        for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) {
                if (ccptr->client_socket != -1)
                {
+                       syslog(LOG_INFO, "terminate_stuck_sessions() is murdering %s", ccptr->curr_user);
                        close(ccptr->client_socket);
                        ccptr->client_socket = -1;
                        killed++;
                }
        }
        end_critical_section(S_SESSION_TABLE);
-       if (killed > 0)
+       if (killed > 0) {
                syslog(LOG_INFO, "Flushed %d stuck sessions\n", killed);
+       }
 }
 
 
@@ -354,15 +367,8 @@ void RemoveContext (CitContext *con)
 
        syslog(LOG_NOTICE, "[%3d] Session ended.\n", con->cs_pid);
 
-       /* 
-        * If the client is still connected, blow 'em away. 
-        * if the socket is 0, its already gone or was never there.
-        */
-       if (con->client_socket != 0)
-       {
-               syslog(LOG_DEBUG, "Closing socket %d\n", con->client_socket);
-               if (close(con->client_socket)) syslog(LOG_NOTICE, "close() : %s", strerror(errno));
-       }
+       /* If the client is still connected, blow 'em away. */
+       client_close();
 
        /* If using AUTHMODE_LDAP, free the DN */
        if (con->ldap_dn) {