@@ -731,14 +731,14 @@ return self; } - (void)dealloc { - [self close]; + if (_socket != nil) + [self close]; [_handler release]; - [_socket release]; [super dealloc]; } - (size_t)lowlevelWriteBuffer: (const void *)buffer @@ -787,20 +787,22 @@ } - (void)close { if (_socket == nil) - return; + @throw [OFNotOpenException exceptionWithObject: self]; if (_toWrite > 0) @throw [OFTruncatedDataException exception]; _socket.delegate = _handler; [_socket asyncReadLine]; [_socket release]; _socket = nil; + + [super close]; } - (int)fileDescriptorForWriting { return _socket.fileDescriptorForWriting; @@ -819,11 +821,12 @@ return self; } - (void)dealloc { - [_socket release]; + if (_socket != nil) + [self close]; [super dealloc]; } - (void)setHeaders: (OFDictionary *)headers @@ -983,10 +986,13 @@ return (super.hasDataInReadBuffer || _socket.hasDataInReadBuffer); } - (void)close { + if (_socket == nil) + @throw [OFNotOpenException exceptionWithObject: self]; + _atEndOfStream = false; [_socket release]; _socket = nil;