summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorunknown <SergeyV@selena.>2005-09-07 15:57:14 +0400
committerunknown <SergeyV@selena.>2005-09-07 15:57:14 +0400
commit22b3e6f8823f78e40363d48ae44b7a57d06d2554 (patch)
treebcf60553d2cda3c381a8cd81327d8f8cbfd032f9 /vio
parentc9b589defa19cc955537213337d941c082607813 (diff)
downloadmariadb-git-22b3e6f8823f78e40363d48ae44b7a57d06d2554.tar.gz
Fixes bug #5588. Additions after merge from 4.0.
sql-common/client.c: Fixes bug #5588. checks if operation was timed out. vio/vio.c: Added vio_was_interrupted() function references to detect timed out operation properly on win32. vio/vio_priv.h: Added vio_ssl_was_interrupted() function that detects timed out operation properly on win32. vio/viosocket.c: Minor changes to follow up the coding standard. vio/viossl.c: Added vio_ssl_was_interrupted() function that detects timed out operation properly on win32.
Diffstat (limited to 'vio')
-rw-r--r--vio/vio.c4
-rw-r--r--vio/vio_priv.h2
-rw-r--r--vio/viosocket.c4
-rw-r--r--vio/viossl.c9
4 files changed, 16 insertions, 3 deletions
diff --git a/vio/vio.c b/vio/vio.c
index 2d5cb711ffc..45572b93ed6 100644
--- a/vio/vio.c
+++ b/vio/vio.c
@@ -50,6 +50,7 @@ void vio_reset(Vio* vio, enum enum_vio_type type,
vio->fastsend =vio_fastsend;
vio->viokeepalive =vio_keepalive;
vio->should_retry =vio_should_retry;
+ vio->was_interrupted=vio_was_interrupted;
vio->vioclose =vio_close_pipe;
vio->peer_addr =vio_peer_addr;
vio->in_addr =vio_in_addr;
@@ -69,6 +70,7 @@ void vio_reset(Vio* vio, enum enum_vio_type type,
vio->fastsend =vio_fastsend;
vio->viokeepalive =vio_keepalive;
vio->should_retry =vio_should_retry;
+ vio->was_interrupted=vio_was_interrupted;
vio->vioclose =vio_close_shared_memory;
vio->peer_addr =vio_peer_addr;
vio->in_addr =vio_in_addr;
@@ -88,7 +90,7 @@ void vio_reset(Vio* vio, enum enum_vio_type type,
vio->fastsend =vio_ssl_fastsend;
vio->viokeepalive =vio_ssl_keepalive;
vio->should_retry =vio_ssl_should_retry;
- vio->was_interrupted=vio_was_interrupted;
+ vio->was_interrupted=vio_ssl_was_interrupted;
vio->vioclose =vio_ssl_close;
vio->peer_addr =vio_ssl_peer_addr;
vio->in_addr =vio_ssl_in_addr;
diff --git a/vio/vio_priv.h b/vio/vio_priv.h
index 3a75a08021d..c1c78cc6efa 100644
--- a/vio/vio_priv.h
+++ b/vio/vio_priv.h
@@ -39,6 +39,8 @@ int vio_ssl_fastsend(Vio *vio);
int vio_ssl_keepalive(Vio *vio, my_bool onoff);
/* Whenever we should retry the last read/write operation. */
my_bool vio_ssl_should_retry(Vio *vio);
+/* Check that operation was timed out */
+my_bool vio_ssl_was_interrupted(Vio *vio);
/* When the workday is over... */
int vio_ssl_close(Vio *vio);
/* Return last error number */
diff --git a/vio/viosocket.c b/vio/viosocket.c
index ca384a57967..0f1abfeea46 100644
--- a/vio/viosocket.c
+++ b/vio/viosocket.c
@@ -197,9 +197,9 @@ vio_should_retry(Vio * vio __attribute__((unused)))
my_bool
-vio_was_interrupted(Vio * vio __attribute__((unused)))
+vio_was_interrupted(Vio *vio __attribute__((unused)))
{
- int en = socket_errno;
+ int en= socket_errno;
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
en == SOCKET_EWOULDBLOCK || en == SOCKET_ETIMEDOUT);
}
diff --git a/vio/viossl.c b/vio/viossl.c
index 2f608209a53..a3a2e7190bd 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -184,6 +184,15 @@ vio_ssl_should_retry(Vio * vio __attribute__((unused)))
}
+my_bool
+vio_ssl_was_interrupted(Vio *vio __attribute__((unused)))
+{
+ int en= socket_errno;
+ return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
+ en == SOCKET_EWOULDBLOCK || en == SOCKET_ETIMEDOUT);
+}
+
+
int vio_ssl_close(Vio * vio)
{
int r;