mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
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/viosocket.c: Set the appropriate timeout in vio_timeout sql/net_serv.cc: Use proper which code in call to vio_timeout to set the proper timeout include/violite.h: Add which parameter to vio_timeout sigs vio/vio_priv.h: Added which parameter to vio_ignore_timeout and vio_ssl_timeout vio/viossl.c: Add which parameter to ssl timeout routine BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
@@ -195,6 +195,7 @@ ram@mysql.r18.ru
|
||||
ram@ram.(none)
|
||||
ramil@mysql.com
|
||||
ranger@regul.home.lan
|
||||
rburnett@bk-internal.mysql.com
|
||||
rburnett@build.mysql.com
|
||||
reggie@bob.(none)
|
||||
reggie@mdk10.(none)
|
||||
|
@@ -81,7 +81,7 @@ my_bool vio_peer_addr(Vio* vio, char *buf, uint16 *port);
|
||||
/* Remotes in_addr */
|
||||
void vio_in_addr(Vio *vio, struct in_addr *in);
|
||||
my_bool vio_poll_read(Vio *vio,uint timeout);
|
||||
void vio_timeout(Vio *vio,uint timeout);
|
||||
void vio_timeout(Vio *vio,uint which, uint timeout);
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
#include <openssl/opensslv.h>
|
||||
@@ -149,7 +149,7 @@ int vio_close_shared_memory(Vio * vio);
|
||||
#define vio_close(vio) ((vio)->vioclose)(vio)
|
||||
#define vio_peer_addr(vio, buf, prt) (vio)->peer_addr(vio, buf, prt)
|
||||
#define vio_in_addr(vio, in) (vio)->in_addr(vio, in)
|
||||
#define vio_timeout(vio, seconds) (vio)->timeout(vio, seconds)
|
||||
#define vio_timeout(vio, which, seconds) (vio)->timeout(vio, which, seconds)
|
||||
#endif /* defined(HAVE_VIO) && !defined(DONT_MAP_VIO) */
|
||||
|
||||
/* This enumerator is used in parser - should be always visible */
|
||||
@@ -189,7 +189,7 @@ struct st_vio
|
||||
void (*in_addr)(Vio*, struct in_addr*);
|
||||
my_bool (*should_retry)(Vio*);
|
||||
int (*vioclose)(Vio*);
|
||||
void (*timeout)(Vio*, unsigned int timeout);
|
||||
void (*timeout)(Vio*, unsigned int which, unsigned int timeout);
|
||||
void *ssl_arg;
|
||||
#ifdef HAVE_SMEM
|
||||
HANDLE handle_file_map;
|
||||
|
@@ -491,7 +491,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
thr_alarm(&alarmed,(uint) net->write_timeout,&alarm_buff);
|
||||
#else
|
||||
alarmed=0;
|
||||
vio_timeout(net->vio, net->write_timeout);
|
||||
vio_timeout(net->vio, 1, net->write_timeout);
|
||||
#endif /* NO_ALARM */
|
||||
|
||||
pos=(char*) packet; end=pos+len;
|
||||
@@ -684,7 +684,7 @@ my_real_read(NET *net, ulong *complen)
|
||||
if (net_blocking)
|
||||
thr_alarm(&alarmed,net->read_timeout,&alarm_buff);
|
||||
#else
|
||||
vio_timeout(net->vio, net->read_timeout);
|
||||
vio_timeout(net->vio, 0, net->read_timeout);
|
||||
#endif /* NO_ALARM */
|
||||
|
||||
pos = net->buff + net->where_b; /* net->packet -4 */
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include <m_string.h>
|
||||
#include <violite.h>
|
||||
|
||||
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);
|
||||
|
@@ -318,12 +318,17 @@ my_bool vio_poll_read(Vio *vio,uint timeout)
|
||||
|
||||
|
||||
void vio_timeout(Vio *vio __attribute__((unused)),
|
||||
uint which __attribute__((unused)),
|
||||
uint timeout __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));
|
||||
#endif /* __WIN__ */
|
||||
}
|
||||
|
||||
|
@@ -421,6 +421,7 @@ int vio_ssl_blocking(Vio * vio __attribute__((unused)),
|
||||
|
||||
|
||||
void vio_ssl_timeout(Vio *vio __attribute__((unused)),
|
||||
uint which __attribute__((unused)),
|
||||
uint timeout __attribute__((unused)))
|
||||
{
|
||||
/* Not yet implemented (non critical) */
|
||||
|
Reference in New Issue
Block a user