From e7d7c0f23630cd75d6912feb4196a84f82566a57 Mon Sep 17 00:00:00 2001 From: "rburnett@bk-internal.mysql.com" <> Date: Thu, 5 May 2005 17:17:57 +0200 Subject: Bug #9721 net_write_timeout not used on Windows Added an extra parameter to all calls to timeout(). 1 means we want to set the write timeout 0 means we wnat to set the read timeout viossl.c: Add which parameter to ssl timeout routine vio_priv.h: Added which parameter to vio_ignore_timeout and vio_ssl_timeout violite.h: Add which parameter to vio_timeout sigs net_serv.cc: Use proper which code in call to vio_timeout to set the proper timeout viosocket.c: Set the appropriate timeout in vio_timeout --- vio/vio_priv.h | 4 ++-- vio/viosocket.c | 9 +++++++-- vio/viossl.c | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) (limited to 'vio') diff --git a/vio/vio_priv.h b/vio/vio_priv.h index 9a925a2c4c9..3a75a08021d 100644 --- a/vio/vio_priv.h +++ b/vio/vio_priv.h @@ -23,7 +23,7 @@ #include #include -void vio_ignore_timeout(Vio *vio, uint timeout); +void vio_ignore_timeout(Vio *vio, uint which, uint timeout); #ifdef HAVE_OPENSSL #include "my_net.h" /* needed because of struct in_addr */ @@ -31,7 +31,7 @@ void vio_ignore_timeout(Vio *vio, uint timeout); void vio_ssl_delete(Vio* vio); int vio_ssl_read(Vio *vio,gptr buf, int size); int vio_ssl_write(Vio *vio,const gptr buf,int size); -void vio_ssl_timeout(Vio *vio, uint timeout); +void vio_ssl_timeout(Vio *vio, uint which, uint timeout); /* setsockopt TCP_NODELAY at IPPROTO_TCP level, when possible. */ int vio_ssl_fastsend(Vio *vio); diff --git a/vio/viosocket.c b/vio/viosocket.c index 77922594469..b6aa793f57b 100644 --- a/vio/viosocket.c +++ b/vio/viosocket.c @@ -318,11 +318,16 @@ my_bool vio_poll_read(Vio *vio,uint timeout) void vio_timeout(Vio *vio __attribute__((unused)), - uint timeout __attribute__((unused))) + uint which __attribute__((unused)), + uint timeout __attribute__((unused))) { #ifdef __WIN__ ulong wait_timeout= (ulong) timeout * 1000; - (void) setsockopt(vio->sd, SOL_SOCKET, SO_RCVTIMEO, (char*) &wait_timeout, + if (which == 0) + (void) setsockopt(vio->sd, SOL_SOCKET, SO_RCVTIMEO, (char*) &wait_timeout, + sizeof(wait_timeout)); + else + (void) setsockopt(vio->sd, SOL_SOCKET, SO_SNDTIMEO, (char*) &wait_timeout, sizeof(wait_timeout)); #endif /* __WIN__ */ } diff --git a/vio/viossl.c b/vio/viossl.c index 07713c83763..773d444063b 100644 --- a/vio/viossl.c +++ b/vio/viossl.c @@ -421,7 +421,8 @@ int vio_ssl_blocking(Vio * vio __attribute__((unused)), void vio_ssl_timeout(Vio *vio __attribute__((unused)), - uint timeout __attribute__((unused))) + uint which __attribute__((unused)), + uint timeout __attribute__((unused))) { /* Not yet implemented (non critical) */ } -- cgit v1.2.1 From e4523c23193dace1f7e4d398d181f49df631cf8d Mon Sep 17 00:00:00 2001 From: "rburnett@bk-internal.mysql.com" <> Date: Fri, 6 May 2005 15:08:10 +0200 Subject: Bug #9721 net_write_timeout not used on Windows viosocket.c: Use ?: syntax to simplify code for setting both timeouts --- vio/viosocket.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'vio') diff --git a/vio/viosocket.c b/vio/viosocket.c index b6aa793f57b..172d9127dc2 100644 --- a/vio/viosocket.c +++ b/vio/viosocket.c @@ -323,12 +323,9 @@ void vio_timeout(Vio *vio __attribute__((unused)), { #ifdef __WIN__ ulong wait_timeout= (ulong) timeout * 1000; - if (which == 0) - (void) setsockopt(vio->sd, SOL_SOCKET, SO_RCVTIMEO, (char*) &wait_timeout, - sizeof(wait_timeout)); - else - (void) setsockopt(vio->sd, SOL_SOCKET, SO_SNDTIMEO, (char*) &wait_timeout, - sizeof(wait_timeout)); + (void) setsockopt(vio->sd, SOL_SOCKET, + which ? SO_SNDTIMEO : SO_RCVTIMEO, (char*) &wait_timeout, + sizeof(wait_timeout)); #endif /* __WIN__ */ } -- cgit v1.2.1