summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorunknown <stewart@mysql.com>2006-06-16 18:54:20 +1000
committerunknown <stewart@mysql.com>2006-06-16 18:54:20 +1000
commit61f4440c294a371a4b86ab0cf047708421445898 (patch)
tree3fa3173b664e6183d16f050c2da2d0838a1a2c2b /extra
parent8128470913e76a508d028fc2f2a2feb0163934a6 (diff)
parent9668198e14d575a12dd889a601233924b1f13479 (diff)
downloadmariadb-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.cpp8
-rw-r--r--extra/yassl/src/socket_wrapper.cpp13
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;
}