Index: src/SSLSocket.m ================================================================== --- src/SSLSocket.m +++ src/SSLSocket.m @@ -353,24 +353,28 @@ } - (void)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { - if (length > INT_MAX) - @throw [OFOutOfRangeException exception]; + int bytesWritten; if (_socket == INVALID_SOCKET) @throw [OFNotOpenException exceptionWithObject: self]; - if (_atEndOfStream) + if (length > INT_MAX) + @throw [OFOutOfRangeException exception]; + + if ((bytesWritten = SSL_write(_SSL, buffer, (int)length)) < 0) @throw [OFWriteFailedException exceptionWithObject: self requestedLength: length - errNo: ENOTCONN]; + bytesWritten: 0 + errNo: 0]; - if (SSL_write(_SSL, buffer, (int)length) < length) + if ((size_t)bytesWritten != length) @throw [OFWriteFailedException exceptionWithObject: self requestedLength: length + bytesWritten: bytesWritten errNo: 0]; } - (bool)hasDataInReadBuffer {