diff options
author | unknown <msvensson@neptunus.(none)> | 2006-06-14 21:30:49 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-06-14 21:30:49 +0200 |
commit | 2a07ee7202f1ca198d60f89f3abd1cd88f87d717 (patch) | |
tree | 399b40bc34de76f51251c9cf71e6d16595667171 /extra | |
parent | 9aed96ce4e1e96ed3075d126d74a669221a5c09f (diff) | |
download | mariadb-git-2a07ee7202f1ca198d60f89f3abd1cd88f87d717.tar.gz |
Bug#19191 Repeated crashes on OpenBSD for ssl test cases
- Import patch from yaSSL
extra/yassl/src/handshake.cpp:
Import patch yassl.diff
extra/yassl/src/socket_wrapper.cpp:
Import patch yassl.diff
Diffstat (limited to 'extra')
-rw-r--r-- | extra/yassl/src/handshake.cpp | 8 | ||||
-rw-r--r-- | extra/yassl/src/socket_wrapper.cpp | 13 |
2 files changed, 15 insertions, 6 deletions
diff --git a/extra/yassl/src/handshake.cpp b/extra/yassl/src/handshake.cpp index 12b62f26e14..66ec64f4af8 100644 --- a/extra/yassl/src/handshake.cpp +++ b/extra/yassl/src/handshake.cpp @@ -880,7 +880,7 @@ int sendData(SSL& ssl, const void* buffer, int sz) ssl.SetError(no_error); ssl.verfiyHandShakeComplete(); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; int sent = 0; for (;;) { @@ -891,7 +891,7 @@ int sendData(SSL& ssl, const void* buffer, int sz) buildMessage(ssl, out, data); ssl.Send(out.get_buffer(), out.get_size()); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; sent += len; if (sent == sz) break; } @@ -918,14 +918,14 @@ int receiveData(SSL& ssl, Data& data) ssl.SetError(no_error); ssl.verfiyHandShakeComplete(); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; if (!ssl.bufferedData()) processReply(ssl); ssl.fillData(data); ssl.useLog().ShowData(data.get_length()); - if (ssl.GetError()) return 0; + if (ssl.GetError()) return -1; if (data.get_length() == 0 && ssl.getSocket().WouldBlock()) { ssl.SetError(YasslError(SSL_ERROR_WANT_READ)); diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp index 803f4b01249..06b403c999d 100644 --- a/extra/yassl/src/socket_wrapper.cpp +++ b/extra/yassl/src/socket_wrapper.cpp @@ -113,13 +113,22 @@ uint Socket::get_ready() const uint Socket::send(const byte* buf, unsigned int sz, int flags) const { + const byte* pos = buf; + const byte* end = pos + sz; + assert(socket_ != INVALID_SOCKET); - int sent = ::send(socket_, reinterpret_cast<const char *>(buf), sz, flags); + + while (pos != end) { + int sent = ::send(socket_, reinterpret_cast<const char *>(pos), + static_cast<int>(end - pos), flags); if (sent == -1) return 0; - return sent; + pos += sent; + } + + return sz; } |