(openssl + mbedssl) fix #140, can send large files with ws send over ssl / still broken with apple ssl

This commit is contained in:
Benjamin Sergeant
2020-01-12 11:08:44 -08:00
parent a01584ad9d
commit d2c5ab1cc4
4 changed files with 40 additions and 50 deletions

View File

@ -230,30 +230,23 @@ namespace ix
ssize_t SocketMbedTLS::send(char* buf, size_t nbyte)
{
ssize_t sent = 0;
std::lock_guard<std::mutex> lock(_mutex);
while (nbyte > 0)
ssize_t res = mbedtls_ssl_write(&_ssl, (unsigned char*) buf, nbyte);
if (res > 0)
{
std::lock_guard<std::mutex> lock(_mutex);
ssize_t res = mbedtls_ssl_write(&_ssl, (unsigned char*) buf, nbyte);
if (res > 0)
{
nbyte -= res;
sent += res;
}
else if (res == MBEDTLS_ERR_SSL_WANT_READ || res == MBEDTLS_ERR_SSL_WANT_WRITE)
{
errno = EWOULDBLOCK;
return -1;
}
else
{
return -1;
}
return res;
}
else if (res == MBEDTLS_ERR_SSL_WANT_READ || res == MBEDTLS_ERR_SSL_WANT_WRITE)
{
errno = EWOULDBLOCK;
return -1;
}
else
{
return -1;
}
return sent;
}
ssize_t SocketMbedTLS::send(const std::string& buffer)