summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorSergeyV@selena. <>2005-08-30 19:19:28 +0400
committerSergeyV@selena. <>2005-08-30 19:19:28 +0400
commite82e15b051a61f8d811ac0c15c92d7f167472faf (patch)
treea7b1b47c1245fde5af125171897bbad4252ebc6a /vio
parente2954b29a12f071023c2a75190bad8ba9f980298 (diff)
downloadmariadb-git-e82e15b051a61f8d811ac0c15c92d7f167472faf.tar.gz
Fixes bug #5588. vio_was_interrupted() function was added to detect
read timeout properly on win32.
Diffstat (limited to 'vio')
-rw-r--r--vio/vio.c2
-rw-r--r--vio/viosocket.c9
2 files changed, 11 insertions, 0 deletions
diff --git a/vio/vio.c b/vio/vio.c
index 2b745ab3ec6..6f0587ad272 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_ssl_fastsend;
vio->viokeepalive =vio_ssl_keepalive;
vio->should_retry =vio_ssl_should_retry;
+ vio->was_interrupted=vio_was_interrupted;
vio->vioclose =vio_ssl_close;
vio->peer_addr =vio_ssl_peer_addr;
vio->in_addr =vio_ssl_in_addr;
@@ -67,6 +68,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;
vio->peer_addr =vio_peer_addr;
vio->in_addr =vio_in_addr;
diff --git a/vio/viosocket.c b/vio/viosocket.c
index f45c9dd98c4..7ea130c9949 100644
--- a/vio/viosocket.c
+++ b/vio/viosocket.c
@@ -216,6 +216,15 @@ vio_should_retry(Vio * vio __attribute__((unused)))
}
+my_bool
+vio_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_close(Vio * vio)
{
int r;