mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Fix timeouts with SSL on Windows, and also sync the fastsend
implementation with normal socket behavior. (Bug #8572)
This commit is contained in:
parent
ed2e508bdd
commit
bd7775866c
1 changed files with 28 additions and 17 deletions
45
vio/viossl.c
45
vio/viossl.c
|
@ -128,26 +128,32 @@ int vio_ssl_write(Vio * vio, const gptr buf, int size)
|
||||||
|
|
||||||
int vio_ssl_fastsend(Vio * vio __attribute__((unused)))
|
int vio_ssl_fastsend(Vio * vio __attribute__((unused)))
|
||||||
{
|
{
|
||||||
int r= 0;
|
int r=0;
|
||||||
DBUG_ENTER("vio_ssl_fastsend");
|
DBUG_ENTER("vio_ssl_fastsend");
|
||||||
|
|
||||||
#ifdef IPTOS_THROUGHPUT
|
#if defined(IPTOS_THROUGHPUT) && !defined(__EMX__)
|
||||||
{
|
{
|
||||||
#ifndef __EMX__
|
int tos= IPTOS_THROUGHPUT;
|
||||||
int tos = IPTOS_THROUGHPUT;
|
r= setsockopt(vio->sd, IPPROTO_IP, IP_TOS, (void *) &tos, sizeof(tos));
|
||||||
if (!setsockopt(vio->sd, IPPROTO_IP, IP_TOS, (void *) &tos, sizeof(tos)))
|
}
|
||||||
#endif /* !__EMX__ */
|
#endif /* IPTOS_THROUGHPUT && !__EMX__ */
|
||||||
{
|
if (!r)
|
||||||
int nodelay = 1;
|
{
|
||||||
if (setsockopt(vio->sd, IPPROTO_TCP, TCP_NODELAY, (void *) &nodelay,
|
#ifdef __WIN__
|
||||||
sizeof(nodelay))) {
|
BOOL nodelay= 1;
|
||||||
DBUG_PRINT("warning",
|
r= setsockopt(vio->sd, IPPROTO_TCP, TCP_NODELAY, (const char*) &nodelay,
|
||||||
("Couldn't set socket option for fast send"));
|
sizeof(nodelay));
|
||||||
r= -1;
|
#else
|
||||||
}
|
int nodelay= 1;
|
||||||
}
|
r= setsockopt(vio->sd, IPPROTO_TCP, TCP_NODELAY, (void*) &nodelay,
|
||||||
|
sizeof(nodelay));
|
||||||
|
#endif /* __WIN__ */
|
||||||
|
}
|
||||||
|
if (r)
|
||||||
|
{
|
||||||
|
DBUG_PRINT("warning", ("Couldn't set socket option for fast send"));
|
||||||
|
r= -1;
|
||||||
}
|
}
|
||||||
#endif /* IPTOS_THROUGHPUT */
|
|
||||||
DBUG_PRINT("exit", ("%d", r));
|
DBUG_PRINT("exit", ("%d", r));
|
||||||
DBUG_RETURN(r);
|
DBUG_RETURN(r);
|
||||||
}
|
}
|
||||||
|
@ -424,6 +430,11 @@ void vio_ssl_timeout(Vio *vio __attribute__((unused)),
|
||||||
uint which __attribute__((unused)),
|
uint which __attribute__((unused)),
|
||||||
uint timeout __attribute__((unused)))
|
uint timeout __attribute__((unused)))
|
||||||
{
|
{
|
||||||
/* Not yet implemented (non critical) */
|
#ifdef __WIN__
|
||||||
|
ulong wait_timeout= (ulong) timeout * 1000;
|
||||||
|
(void) setsockopt(vio->sd, SOL_SOCKET,
|
||||||
|
which ? SO_SNDTIMEO : SO_RCVTIMEO, (char*) &wait_timeout,
|
||||||
|
sizeof(wait_timeout));
|
||||||
|
#endif /* __WIN__ */
|
||||||
}
|
}
|
||||||
#endif /* HAVE_OPENSSL */
|
#endif /* HAVE_OPENSSL */
|
||||||
|
|
Loading…
Add table
Reference in a new issue