summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_net.c
diff options
context:
space:
mode:
authorChristoph M. Becker <cmb@php.net>2015-09-09 03:19:55 +0200
committerChristoph M. Becker <cmb@php.net>2015-09-09 03:19:55 +0200
commit71f90dfbad753bc00538dbb736ec023e63b72504 (patch)
treebb7b61c285cd9b9d80f53900eff52b8c7c021d93 /ext/mysqlnd/mysqlnd_net.c
parentc7dffb5673c5e2303e293cb71997f2fae6bdf2e9 (diff)
parentb89f128480e673c0c0981a0037c6f4af883881d0 (diff)
downloadphp-git-71f90dfbad753bc00538dbb736ec023e63b72504.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: Fix #70456: mysqlnd doesn't activate TCP keep-alive when connecting to a server Resolved conflicts: ext/mysqlnd/mysqlnd_net.c
Diffstat (limited to 'ext/mysqlnd/mysqlnd_net.c')
-rw-r--r--ext/mysqlnd/mysqlnd_net.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
index bcd40d7ab6..72f7dfc5ad 100644
--- a/ext/mysqlnd/mysqlnd_net.c
+++ b/ext/mysqlnd/mysqlnd_net.c
@@ -61,6 +61,27 @@ mysqlnd_set_sock_no_delay(php_stream * stream)
/* }}} */
+/* {{{ mysqlnd_set_sock_keepalive */
+static int
+mysqlnd_set_sock_keepalive(php_stream * stream)
+{
+
+ int socketd = ((php_netstream_data_t*)stream->abstract)->socket;
+ int ret = SUCCESS;
+ int flag = 1;
+ int result = setsockopt(socketd, SOL_SOCKET, SO_KEEPALIVE, (char *) &flag, sizeof(int));
+
+ DBG_ENTER("mysqlnd_set_sock_keepalive");
+
+ if (result == -1) {
+ ret = FAILURE;
+ }
+
+ DBG_RETURN(ret);
+}
+/* }}} */
+
+
/* {{{ mysqlnd_net::network_read_ex */
static enum_func_status
MYSQLND_METHOD(mysqlnd_net, network_read_ex)(MYSQLND_NET * const net, zend_uchar * const buffer, const size_t count,
@@ -260,6 +281,8 @@ MYSQLND_METHOD(mysqlnd_net, post_connect_set_opt)(MYSQLND_NET * const net,
if (!memcmp(scheme, "tcp://", sizeof("tcp://") - 1)) {
/* TCP -> Set TCP_NODELAY */
mysqlnd_set_sock_no_delay(net_stream);
+ /* TCP -> Set SO_KEEPALIVE */
+ mysqlnd_set_sock_keepalive(net_stream);
}
}