don't fetch & dereference pointers on shut down all the time.
[citadel.git] / citadel / modules / pop3 / serv_pop3.c
index 5468af94bacecb2f092579dd44c17a33fdcaf49f..d3e3e0b50efea70002f649b28b3d4fdea1e0ffb5 100644 (file)
@@ -95,10 +95,13 @@ void pop3_cleanup_function(void)
        /* Don't do this stuff if this is not a POP3 session! */
        if (CCC->h_command_function != pop3_command_loop) return;
 
+       struct citpop3 *pop3 = ((struct citpop3 *)CCC->session_specific_data);
        POP3M_syslog(LOG_DEBUG, "Performing POP3 cleanup hook");
-       if (POP3->msgs != NULL) free(POP3->msgs);
+       if (pop3->msgs != NULL) {
+               free(pop3->msgs);
+       }
 
-       free(POP3);
+       free(pop3);
 }
 
 
@@ -195,7 +198,7 @@ void pop3_add_message(long msgnum, void *userdata)
                              HEADERS_ALL,
                              0, 1, NULL,
                              SUPPRESS_ENV_TO,
-                             NULL, NULL);
+                             NULL, NULL, NULL);
 
                smi.meta_rfc822_length = StrLength(CCC->redirect_buffer);
                FreeStrBuf(&CCC->redirect_buffer); /* TODO: WHEW, all this for just knowing the length???? */
@@ -359,7 +362,7 @@ void pop3_retr(char *argbuf) {
        CtdlOutputMsg(POP3->msgs[which_one - 1].msgnum,
                      MT_RFC822, HEADERS_ALL, 0, 1, NULL,
                      (ESC_DOT|SUPPRESS_ENV_TO),
-                     NULL, NULL);
+                     NULL, NULL, NULL);
        cprintf(".\r\n");
 }
 
@@ -397,7 +400,7 @@ void pop3_top(char *argbuf)
                      HEADERS_ALL,
                      0, 1, NULL,
                      SUPPRESS_ENV_TO,
-                     NULL, NULL);
+                     NULL, NULL, NULL);
 
        msgtext = CCC->redirect_buffer;
        CCC->redirect_buffer = NULL;
@@ -480,14 +483,14 @@ void pop3_update(void)
 
        /* Set last read pointer */
        if (POP3->num_msgs > 0) {
-               CtdlGetUserLock(&CCC->user, CCC->curr_user);
+               CtdlLockGetCurrentUser();
 
                CtdlGetRelationship(&vbuf, &CCC->user, &CCC->room);
                snprintf(vbuf.v_seen, sizeof vbuf.v_seen, "*:%ld",
                        POP3->msgs[POP3->num_msgs-1].msgnum);
                CtdlSetRelationship(&vbuf, &CCC->user, &CCC->room);
 
-               CtdlPutUserLock(&CCC->user);
+               CtdlPutCurrentUserLock();
        }
 
 }