(apple ssl) model write method after the OpenSSL one for consistency

More test code for #140.
This commit is contained in:
Benjamin Sergeant
2020-01-10 18:32:34 -08:00
parent 0544cdedeb
commit 9651f3823d
11 changed files with 124 additions and 23 deletions

View File

@ -238,31 +238,31 @@ namespace ix
ssize_t SocketAppleSSL::send(char* buf, size_t nbyte)
{
OSStatus status = errSSLWouldBlock;
while (status == errSSLWouldBlock)
ssize_t sent = 0;
while (nbyte > 0)
{
size_t processed = 0;
std::lock_guard<std::mutex> lock(_mutex);
status = SSLWrite(_sslContext, buf, nbyte, &processed);
if (processed > 0) return (ssize_t) processed;
size_t processed = 0;
OSStatus status = SSLWrite(_sslContext, buf + sent, nbyte, &processed);
// The connection was reset, inform the caller that this
// Socket should close
if (status == errSSLClosedGraceful || status == errSSLClosedNoNotify ||
status == errSSLClosedAbort)
if (status == noErr)
{
errno = ECONNRESET;
return -1;
nbyte -= processed;
sent += processed;
}
if (status == errSSLWouldBlock)
else if (status == errSSLWouldBlock)
{
errno = EWOULDBLOCK;
return -1;
}
else
{
return -1;
}
}
return -1;
return sent;
}
ssize_t SocketAppleSSL::send(const std::string& buffer)

View File

@ -6,4 +6,4 @@
#pragma once
#define IX_WEBSOCKET_VERSION "7.9.2"
#define IX_WEBSOCKET_VERSION "7.9.3"