Fix to MXS-181: https://mariadb.atlassian.net/browse/MXS-181
Added TCP_NODELAY to socket options.
This commit is contained in:
@ -46,6 +46,7 @@
|
|||||||
#include <modinfo.h>
|
#include <modinfo.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <modutil.h>
|
#include <modutil.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
|
||||||
MODULE_INFO info = {
|
MODULE_INFO info = {
|
||||||
MODULE_API_PROTOCOL,
|
MODULE_API_PROTOCOL,
|
||||||
@ -1064,6 +1065,9 @@ int gw_MySQLListener(
|
|||||||
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,"Error: Failed to set socket options. Error %d: %s",errno,strerror(errno))));
|
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,"Error: Failed to set socket options. Error %d: %s",errno,strerror(errno))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((syseno = setsockopt(l_so, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one))) != 0){
|
||||||
|
LOGIF(LE, (skygw_log_write_flush(LOGFILE_ERROR,"Error: Failed to set socket options. Error %d: %s",errno,strerror(errno))));
|
||||||
|
}
|
||||||
|
|
||||||
// set NONBLOCKING mode
|
// set NONBLOCKING mode
|
||||||
setnonblocking(l_so);
|
setnonblocking(l_so);
|
||||||
|
|||||||
@ -44,6 +44,7 @@
|
|||||||
#include <skygw_types.h>
|
#include <skygw_types.h>
|
||||||
#include <skygw_utils.h>
|
#include <skygw_utils.h>
|
||||||
#include <log_manager.h>
|
#include <log_manager.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
|
||||||
/** Defined in log_manager.cc */
|
/** Defined in log_manager.cc */
|
||||||
extern int lm_enabled_logfiles_bitmask;
|
extern int lm_enabled_logfiles_bitmask;
|
||||||
@ -812,6 +813,23 @@ int gw_do_connect_to_backend(
|
|||||||
goto close_so;
|
goto close_so;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int one = 1;
|
||||||
|
if(setsockopt(so, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)) != 0)
|
||||||
|
{
|
||||||
|
LOGIF(LE, (skygw_log_write_flush(
|
||||||
|
LOGFILE_ERROR,
|
||||||
|
"Error: Failed to set socket options "
|
||||||
|
"%s:%d failed.\n\t\t Socket configuration failed "
|
||||||
|
"due %d, %s.",
|
||||||
|
host,
|
||||||
|
port,
|
||||||
|
errno,
|
||||||
|
strerror(errno))));
|
||||||
|
rv = -1;
|
||||||
|
/** Close socket */
|
||||||
|
goto close_so;
|
||||||
|
}
|
||||||
|
|
||||||
/* set socket to as non-blocking here */
|
/* set socket to as non-blocking here */
|
||||||
setnonblocking(so);
|
setnonblocking(so);
|
||||||
rv = connect(so, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
|
rv = connect(so, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
|
||||||
|
|||||||
Reference in New Issue
Block a user