com php-src: these methods should return a stream. This makes it easier to intercept the return value: ext/mysqlnd/mysqlnd_net.c ext
/mysqlnd/mysqlnd_structs.h
| From: | Andrey Hristov | Date: | Mon, 07 May 2012 13:32:00 +0000 |
| Subject: | com php-src: these methods should return a stream. This makes it easier to intercept the return value: ext/mysqlnd/mysqlnd_net.c ext /mysqlnd/mysqlnd_structs.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-68975@lists.php.net to get a copy of this message | ||
Commit: c75cbd62dda8a1fab2a0e68ed07ea73ca5e2b1d2
Author: andrey <andrey@php.net> Mon, 7 May 2012 15:32:00 +0200
Parents: 68536a41672ead2d2872af01af4d4167c47366c0
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c75cbd62dda8a1fab2a0e68ed07ea73ca5e2b1d2
Log:
these methods should return a stream. This makes it easier to intercept
the return value
Changed paths:
M ext/mysqlnd/mysqlnd_net.c
M ext/mysqlnd/mysqlnd_structs.h
Diff:
diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c
index b2fe662..a641a41 100644
--- a/ext/mysqlnd/mysqlnd_net.c
+++ b/ext/mysqlnd/mysqlnd_net.c
@@ -105,7 +105,7 @@ MYSQLND_METHOD(mysqlnd_net, network_write_ex)(MYSQLND_NET * const net, const zen
/* }}} */
/* {{{ mysqlnd_net::open_pipe */
-static enum_func_status
+static php_stream *
MYSQLND_METHOD(mysqlnd_net, open_pipe)(MYSQLND_NET * const net, const char * const scheme, const
size_t scheme_len,
const zend_bool persistent,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info TSRMLS_DC)
@@ -125,7 +125,7 @@ MYSQLND_METHOD(mysqlnd_net, open_pipe)(MYSQLND_NET * const net, const char * con
net_stream = php_stream_open_wrapper((char*) scheme + sizeof("pipe://") - 1,
"r+", streams_options, NULL);
if (!net_stream) {
SET_CLIENT_ERROR(*error_info, CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, "Unknown errror while
connecting");
- DBG_RETURN(FAIL);
+ DBG_RETURN(NULL);
}
/*
Streams are not meant for C extensions! Thus we need a hack. Every connected stream will
@@ -136,15 +136,14 @@ MYSQLND_METHOD(mysqlnd_net, open_pipe)(MYSQLND_NET * const net, const char *
con
zend_hash_index_del(&EG(regular_list), net_stream->rsrc_id);
net_stream->in_free = 0;
- (void) net->data->m.set_stream(net, net_stream TSRMLS_CC);
- DBG_RETURN(PASS);
+ DBG_RETURN(net_stream);
}
/* }}} */
/* {{{ mysqlnd_net::open_tcp_or_unix */
-static enum_func_status
+static php_stream *
MYSQLND_METHOD(mysqlnd_net, open_tcp_or_unix)(MYSQLND_NET * const net, const char * const scheme,
const size_t scheme_len,
const zend_bool persistent,
MYSQLND_STATS * const conn_stats, MYSQLND_ERROR_INFO * const error_info TSRMLS_DC)
@@ -191,7 +190,7 @@ MYSQLND_METHOD(mysqlnd_net, open_tcp_or_unix)(MYSQLND_NET * const net, const cha
/* no mnd_ since we don't allocate it */
efree(errstr);
}
- DBG_RETURN(FAIL);
+ DBG_RETURN(NULL);
}
if (hashed_details) {
/*
@@ -227,8 +226,7 @@ MYSQLND_METHOD(mysqlnd_net, open_tcp_or_unix)(MYSQLND_NET * const net, const cha
zend_hash_index_del(&EG(regular_list), net_stream->rsrc_id);
net_stream->in_free = 0;
- (void) net->data->m.set_stream(net, net_stream TSRMLS_CC);
- DBG_RETURN(PASS);
+ DBG_RETURN(net_stream);
}
/* }}} */
@@ -300,8 +298,11 @@ MYSQLND_METHOD(mysqlnd_net, connect_ex)(MYSQLND_NET * const net, const char *
co
open_stream = net->data->m.get_open_stream(net, scheme, scheme_len, error_info TSRMLS_CC);
if (open_stream) {
- if (PASS == (ret = open_stream(net, scheme, scheme_len, persistent, conn_stats, error_info
TSRMLS_CC))) {
+ php_stream * net_stream = open_stream(net, scheme, scheme_len, persistent, conn_stats, error_info
TSRMLS_CC);
+ if (net_stream) {
+ (void) net->data->m.set_stream(net, net_stream TSRMLS_CC);
net->data->m.post_connect_set_opt(net, scheme, scheme_len, conn_stats, error_info
TSRMLS_CC);
+ ret = PASS;
}
}
diff --git a/ext/mysqlnd/mysqlnd_structs..h b/ext/mysqlnd/mysqlnd_structs.h
index 6dcb8b3..b355a0d 100644
--- a/ext/mysqlnd/mysqlnd_structs.h
+++ b/ext/mysqlnd/mysqlnd_structs.h
@@ -283,7 +283,7 @@ typedef enum_func_status (*func_mysqlnd_net__init)(MYSQLND_NET * const net, MYSQ
typedef void (*func_mysqlnd_net__dtor)(MYSQLND_NET * const net, MYSQLND_STATS * const
conn_stats, MYSQLND_ERROR_INFO * const error_info TSRMLS_DC);
typedef enum_func_status (*func_mysqlnd_net__connect_ex)(MYSQLND_NET * const net, const char *
const scheme, const size_t scheme_len, const zend_bool persistent, MYSQLND_STATS * const conn_stats,
MYSQLND_ERROR_INFO * const error_info TSRMLS_DC);
typedef void (*func_mysqlnd_net__close_stream)(MYSQLND_NET * const net, MYSQLND_STATS * const
conn_stats, MYSQLND_ERROR_INFO * const error_info TSRMLS_DC);
-typedef enum_func_status (*func_mysqlnd_net__open_stream)(MYSQLND_NET * const net, const char *
const scheme, const size_t scheme_len, const zend_bool persistent, MYSQLND_STATS * const conn_stats,
MYSQLND_ERROR_INFO * const error_info TSRMLS_DC);
+typedef php_stream * (*func_mysqlnd_net__open_stream)(MYSQLND_NET * const net, const char * const
scheme, const size_t scheme_len, const zend_bool persistent, MYSQLND_STATS * const conn_stats,
MYSQLND_ERROR_INFO * const error_info TSRMLS_DC);
typedef php_stream * (*func_mysqlnd_net__get_stream)(const MYSQLND_NET * const net TSRMLS_DC);
typedef php_stream * (*func_mysqlnd_net__set_stream)(MYSQLND_NET * const net, php_stream *
net_stream TSRMLS_DC);
typedef func_mysqlnd_net__open_stream (*func_mysqlnd_net__get_open_stream)(MYSQLND_NET * const net,
const char * const scheme, const size_t scheme_len, MYSQLND_ERROR_INFO * const error_info
TSRMLS_DC);