summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_vio.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqlnd/mysqlnd_vio.c')
-rw-r--r--ext/mysqlnd/mysqlnd_vio.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/ext/mysqlnd/mysqlnd_vio.c b/ext/mysqlnd/mysqlnd_vio.c
index f559ba6c0e..005263fdd9 100644
--- a/ext/mysqlnd/mysqlnd_vio.c
+++ b/ext/mysqlnd/mysqlnd_vio.c
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
- | Copyright (c) 2006-2015 The PHP Group |
+ | Copyright (c) 2006-2016 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -74,7 +74,7 @@ mysqlnd_set_sock_keepalive(php_stream * stream)
/* {{{ mysqlnd_vio::network_read */
static enum_func_status
MYSQLND_METHOD(mysqlnd_vio, network_read)(MYSQLND_VIO * const vio, zend_uchar * const buffer, const size_t count,
- MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
+ MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{
enum_func_status return_value = PASS;
php_stream * net_stream = vio->data->m.get_stream(vio);
@@ -105,7 +105,7 @@ MYSQLND_METHOD(mysqlnd_vio, network_read)(MYSQLND_VIO * const vio, zend_uchar *
/* {{{ mysqlnd_vio::network_write */
static size_t
MYSQLND_METHOD(mysqlnd_vio, network_write)(MYSQLND_VIO * const vio, const zend_uchar * const buffer, const size_t count,
- MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
+ MYSQLND_STATS * const stats, MYSQLND_ERROR_INFO * const error_info)
{
size_t ret;
DBG_ENTER("mysqlnd_vio::network_write");
@@ -318,8 +318,7 @@ MYSQLND_METHOD(mysqlnd_vio, connect)(MYSQLND_VIO * const vio, const MYSQLND_CSTR
open_stream = vio->data->m.get_open_stream(vio, scheme, error_info);
if (open_stream) {
php_stream * net_stream = open_stream(vio, scheme, persistent, conn_stats, error_info);
- if (net_stream) {
- (void) vio->data->m.set_stream(vio, net_stream);
+ if (net_stream && PASS == vio->data->m.set_stream(vio, net_stream)) {
vio->data->m.post_connect_set_opt(vio, scheme, conn_stats, error_info);
ret = PASS;
}
@@ -676,7 +675,7 @@ MYSQLND_METHOD(mysqlnd_vio, close_stream)(MYSQLND_VIO * const net, MYSQLND_STATS
} else {
php_stream_free(net_stream, PHP_STREAM_FREE_CLOSE);
}
- (void) net->data->m.set_stream(net, NULL);
+ net->data->m.set_stream(net, NULL);
}
DBG_VOID_RETURN;
@@ -731,16 +730,26 @@ MYSQLND_METHOD(mysqlnd_vio, get_stream)(const MYSQLND_VIO * const net)
/* {{{ mysqlnd_vio::set_stream */
-static php_stream *
-MYSQLND_METHOD(mysqlnd_vio, set_stream)(MYSQLND_VIO * const net, php_stream * net_stream)
+static enum_func_status
+MYSQLND_METHOD(mysqlnd_vio, set_stream)(MYSQLND_VIO * const vio, php_stream * net_stream)
{
- php_stream * ret = NULL;
DBG_ENTER("mysqlnd_vio::set_stream");
- if (net) {
- net->data->stream = net_stream;
- ret = net->data->stream;
+ if (vio) {
+ vio->data->stream = net_stream;
+ DBG_RETURN(PASS);
}
- DBG_RETURN(ret);
+ DBG_RETURN(FAIL);
+}
+/* }}} */
+
+
+/* {{{ mysqlnd_vio::has_valid_stream */
+static zend_bool
+MYSQLND_METHOD(mysqlnd_vio, has_valid_stream)(const MYSQLND_VIO * const vio)
+{
+ DBG_ENTER("mysqlnd_vio::has_valid_stream");
+ DBG_INF_FMT("%p %p", vio, vio? vio->data->stream:NULL);
+ DBG_RETURN((vio && vio->data->stream)? TRUE: FALSE);
}
/* }}} */
@@ -757,6 +766,7 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_vio)
MYSQLND_METHOD(mysqlnd_vio, get_stream),
MYSQLND_METHOD(mysqlnd_vio, set_stream),
+ MYSQLND_METHOD(mysqlnd_vio, has_valid_stream),
MYSQLND_METHOD(mysqlnd_vio, get_open_stream),
MYSQLND_METHOD(mysqlnd_vio, set_client_option),