CtdlDeleteMessages() now has a bulk API. Updated all of the
[citadel.git] / citadel / serv_pop3.c
index 684611277f0da6a1248f4487c096e1f59214528d..a015e429db116e5b875ea1948d8c18b5699fcf88 100644 (file)
@@ -466,12 +466,19 @@ 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;
+                       }
                }
+               CtdlDeleteMessages(MAILROOM, deletemsgs, num_deletemsgs, "", 1);
+               free(deletemsgs);
        }
 
        /* Set last read pointer */