diff options
author | unknown <stewart@mysql.com> | 2006-06-16 18:54:20 +1000 |
---|---|---|
committer | unknown <stewart@mysql.com> | 2006-06-16 18:54:20 +1000 |
commit | 61f4440c294a371a4b86ab0cf047708421445898 (patch) | |
tree | 3fa3173b664e6183d16f050c2da2d0838a1a2c2b /extra | |
parent | 8128470913e76a508d028fc2f2a2feb0163934a6 (diff) | |
parent | 9668198e14d575a12dd889a601233924b1f13479 (diff) | |
download | mariadb-git-61f4440c294a371a4b86ab0cf047708421445898.tar.gz |
Merge mysql.com:/home/stewart/Documents/MySQL/5.0/main
into mysql.com:/home/stewart/Documents/MySQL/5.1/main
mysql-test/r/ndb_condition_pushdown.result:
Auto merged
mysql-test/r/type_newdecimal.result:
Auto merged
mysql-test/r/view_grant.result:
Auto merged
mysql-test/t/ndb_condition_pushdown.test:
Auto merged
mysql-test/t/type_newdecimal.test:
Auto merged
mysql-test/t/view_grant.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
mysql-test/valgrind.supp:
Manual merge
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; } |