Workaround pop3 servers sending empty lines in message lists
[citadel.git] / citadel / modules / pop3client / serv_pop3client.c
index 29e6bcc4dcca500ed9de6d1a2521f7daf3c62a4c..81feca096c9410fc52ac54865480b007e765a2cd 100644 (file)
@@ -332,6 +332,17 @@ eNextState POP3C_GetListOneLine(pop3aggr *RecvMsg)
                return eSendReply;
 
        }
+
+       /*
+        * work around buggy pop3 servers which send
+        * empty lines in their listings.
+       */
+       if ((StrLength(RecvMsg->IO.IOBuf) == 0) ||
+           !isdigit(ChrPtr(RecvMsg->IO.IOBuf)[0]))
+       {
+               return eReadMore;
+       }
+
        OneMsg = (FetchItem*) malloc(sizeof(FetchItem));
        memset(OneMsg, 0, sizeof(FetchItem));
        OneMsg->MSGID = atol(ChrPtr(RecvMsg->IO.IOBuf));