@@ -297,11 +297,12 @@ char *buffer = [self allocMemoryWithSize: BUFFER_LENGTH]; [sock asyncReadIntoBuffer: buffer length: BUFFER_LENGTH target: self - selector: @selector(stream:didReadIntoBuffer:length:)]; + selector: @selector(stream:didReadIntoBuffer:length: + exception:)]; } - (BOOL)XMPP_parseBuffer: (const void*)buffer length: (size_t)length { @@ -338,11 +339,17 @@ } - (BOOL)stream: (OFStream*)stream didReadIntoBuffer: (char*)buffer length: (size_t)length + exception: (OFException*)exception { + if (exception != nil) { + [self close]; + return NO; + } + if (![self XMPP_parseBuffer: buffer length: length]) return NO; if (oldParser != nil || oldElementBuilder != nil) { @@ -353,12 +360,12 @@ oldElementBuilder = nil; [sock asyncReadIntoBuffer: buffer length: BUFFER_LENGTH target: self - selector: @selector(stream: - didReadIntoBuffer:length:)]; + selector: @selector(stream:didReadIntoBuffer: + length:exception:)]; return NO; } return YES;