Fixed bug when response is broken into multiple packets
authorHugo Villeneuve <hugo@hugovil.com>
Tue, 28 Jun 2005 02:25:31 +0000 (02:25 +0000)
committerHugo Villeneuve <hugo@hugovil.com>
Sat, 25 May 2013 21:36:10 +0000 (17:36 -0400)
There was an error after the last line in the buffer (first part of the response) was processed, which generated a NULL stringp

src/imap.c

index 798d5b6..3fc2e4f 100644 (file)
@@ -120,12 +120,19 @@ IMAP4_ReceiveResponse( void )
     /* In case no delimiter was found, the token is  taken  to
        be the entire string *stringp, and *stringp is made NULL. */
     if( stringp == NULL ) {
     /* In case no delimiter was found, the token is  taken  to
        be the entire string *stringp, and *stringp is made NULL. */
     if( stringp == NULL ) {
-      /* This should never happen. */
-      ErrorLocation( __FILE__, __LINE__ );
-      fprintf( stderr, "  Delimiter not found in strsep() call.\n" );
-      goto error;
+      if( token[0] == '\0' ) {
+       /* This means we finished parsing the last line of the buffer, but we need to
+          get more data to continue process the next part of the IMAP4 response. */
+       goto get_packet;
+      }
+      else {
+       /* This should never happen. */
+       ErrorLocation( __FILE__, __LINE__ );
+       fprintf( stderr, "  Delimiter not found in strsep() call.\n" );
+       goto error;
+      }
     }
     }
-
+    
     if( token == NULL ) {
       /* This should never happen. */
       ErrorLocation( __FILE__, __LINE__ );
     if( token == NULL ) {
       /* This should never happen. */
       ErrorLocation( __FILE__, __LINE__ );