        _consumeIfMatch(self, ' ');
        [dict setObject:_parseParenthesizedAddressList(self) forKey:@"from"];
        _consumeIfMatch(self, ' ');
-@@ -1783,14 +2076,20 @@
+@@ -1783,14 +2086,20 @@
        _consumeIfMatch(self, ' ');
        [dict setObject:_parseParenthesizedAddressList(self) forKey:@"bcc"];
        _consumeIfMatch(self, ' ');

     }
   }
 
@@ -1805,14 +2104,9 @@
 	      forKey: @"disposition"];
 	if (_la(self, 0) != ')') {
 	  _consume(self,1);

 
 static __inline__ NSException *_consumeIfMatch
   (NGImap4ResponseParser *self, unsigned char _m);
@@ -300,6 +305,16 @@
       /* those starting with a number '24 ', eg '24 OK Completed' */
       endOfCommand = (_parseTaggedResponse(self, result) == _tag);
     }
+    else if (l0 == -1) {
+      *ex_ = [self->buffer lastException];
+      if (!*ex_)
+        *ex_
+          = [NSException exceptionWithName:@"UnexpectedEndOfStream"
+                                    reason:(@"the parsed stream ended"
+                                            @" unexpectedly")
+                                  userInfo:nil];
+      endOfCommand = YES;
+    }
   }
   return result;
 }
@@ -488,6 +503,50 @@
   return [self _parseDataIntoRAM:size];
 }
 
