]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_pop3.c
* added a comment infront of the svn modifieable returns. Now it will be me listed...
[citadel.git] / citadel / serv_pop3.c
index 684611277f0da6a1248f4487c096e1f59214528d..a03c6ee6ed1b410ce739211af450066f77af81c5 100644 (file)
@@ -122,7 +122,7 @@ void pop3_user(char *argbuf) {
        striplt(username);
 
        /* lprintf(CTDL_DEBUG, "Trying <%s>\n", username); */
-       if (CtdlLoginExistingUser(username) == login_ok) {
+       if (CtdlLoginExistingUser(NULL, username) == login_ok) {
                cprintf("+OK Password required for %s\r\n", username);
        }
        else {
@@ -180,7 +180,7 @@ int pop3_grab_mailbox(void) {
        if (getroom(&CC->room, MAILROOM) != 0) return(-1);
 
        /* Load up the messages */
-       CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL,
+       CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL,
                pop3_add_message, NULL);
 
        /* Figure out which are old and which are new */
@@ -242,7 +242,7 @@ void pop3_apop(char *argbuf)
    memset(userdigest, MD5_HEXSTRING_SIZE, 0);
    strncpy(userdigest, sptr, MD5_HEXSTRING_SIZE-1);
    
-   if (CtdlLoginExistingUser(username) != login_ok)
+   if (CtdlLoginExistingUser(NULL, username) != login_ok)
    {
        cprintf("-ERR No such user.\r\n");
        return;
@@ -466,12 +466,21 @@ void pop3_update(void) {
        int i;
         struct visit vbuf;
 
+       long *deletemsgs = NULL;
+       int num_deletemsgs = 0;
+
        /* Remove messages marked for deletion */
-       if (POP3->num_msgs > 0) for (i=0; i<POP3->num_msgs; ++i) {
-               if (POP3->msgs[i].deleted) {
-                       CtdlDeleteMessages(MAILROOM,
-                               POP3->msgs[i].msgnum, "", 1);
+       if (POP3->num_msgs > 0) {
+               deletemsgs = malloc(POP3->num_msgs * sizeof(long));
+               for (i=0; i<POP3->num_msgs; ++i) {
+                       if (POP3->msgs[i].deleted) {
+                               deletemsgs[num_deletemsgs++] = POP3->msgs[i].msgnum;
+                       }
+               }
+               if (num_deletemsgs > 0) {
+                       CtdlDeleteMessages(MAILROOM, deletemsgs, num_deletemsgs, "");
                }
+               free(deletemsgs);
        }
 
        /* Set last read pointer */
@@ -716,5 +725,7 @@ char *serv_pop3_init(void)
                                NULL);
 #endif
        CtdlRegisterSessionHook(pop3_cleanup_function, EVT_STOP);
+
+       /* return our Subversion id for the Log */
        return "$Id$";
 }