Fix IMAP IDLE with Google's IMAP service.
authorBrenden Matthews <brenden@rty.ca>
Sun, 27 Sep 2009 01:38:07 +0000 (18:38 -0700)
committerBrenden Matthews <brenden@rty.ca>
Sun, 27 Sep 2009 01:38:55 +0000 (18:38 -0700)
src/mail.c

index 5d3d8fe..ec1fbc9 100644 (file)
@@ -523,6 +523,15 @@ void *imap_thread(void *arg)
                                fail++;
                                break;
                        }
+                       strncpy(sendbuf, "abc CAPABILITY\r\n", MAXDATASIZE);
+                       if (imap_command(sockfd, sendbuf, recvbuf, "abc OK")) {
+                               fail++;
+                               break;
+                       }
+                       if (strstr(recvbuf, " IDLE ") != NULL) {
+                               has_idle = 1;
+                       }
+
                        strncpy(sendbuf, "a1 login ", MAXDATASIZE);
                        strncat(sendbuf, mail->user, MAXDATASIZE - strlen(sendbuf) - 1);
                        strncat(sendbuf, " ", MAXDATASIZE - strlen(sendbuf) - 1);
@@ -532,9 +541,6 @@ void *imap_thread(void *arg)
                                fail++;
                                break;
                        }
-                       if (strstr(recvbuf, " IDLE ") != NULL) {
-                               has_idle = 1;
-                       }
 
                        strncpy(sendbuf, "a2 STATUS ", MAXDATASIZE);
                        strncat(sendbuf, mail->folder, MAXDATASIZE - strlen(sendbuf) - 1);