Skip to content

Commit

Permalink
Kill a TSRMLS_FETCH() in php_stream_context_set() by passing TSRMLS_C…
Browse files Browse the repository at this point in the history
…C to it

# For mysqlnd: Relevant PHP_API_VERSION are put in place for cross version compatibility
  • Loading branch information
KalleZ committed Dec 18, 2013
1 parent d02340b commit c835981
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 8 deletions.
8 changes: 8 additions & 0 deletions ext/mysqlnd/mysqlnd_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,11 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
ZVAL_STRING(&cipher_zval, net->data->options.ssl_cipher, 0);
php_stream_context_set_option(context, "ssl", "ciphers", &cipher_zval);
}
#if PHP_API_VERSION >= 20131106
php_stream_context_set(net_stream, context TSRMLS_CC);
#else
php_stream_context_set(net_stream, context);
#endif
if (php_stream_xport_crypto_setup(net_stream, STREAM_CRYPTO_METHOD_TLS_CLIENT, NULL TSRMLS_CC) < 0 ||
php_stream_xport_crypto_enable(net_stream, 1 TSRMLS_CC) < 0)
{
Expand All @@ -916,7 +920,11 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(MYSQLND_NET * const net TSRMLS_DC)
of the context, which means usage of already freed memory, bad. Actually we don't need this
context anymore after we have enabled SSL on the connection. Thus it is very simple, we remove it.
*/
#if PHP_API_VERSION >= 20131106
php_stream_context_set(net_stream, NULL TSRMLS_CC);
#else
php_stream_context_set(net_stream, NULL);
#endif

if (net->data->options.timeout_read) {
struct timeval tv;
Expand Down
6 changes: 3 additions & 3 deletions ext/standard/ftp_fopen_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ static php_stream *php_ftp_fopen_connect(php_stream_wrapper *wrapper, const char
goto connect_errexit;
}

php_stream_context_set(stream, context);
php_stream_context_set(stream, context TSRMLS_CC);
php_stream_notify_info(context, PHP_STREAM_NOTIFY_CONNECT, NULL, 0);

/* Start talking to ftp server */
Expand Down Expand Up @@ -571,7 +571,7 @@ php_stream * php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, const char *pa
goto errexit;
}

php_stream_context_set(datastream, context);
php_stream_context_set(datastream, context TSRMLS_CC);
php_stream_notify_progress_init(context, 0, file_size);

if (use_ssl_on_data && (php_stream_xport_crypto_setup(datastream,
Expand Down Expand Up @@ -745,7 +745,7 @@ php_stream * php_stream_ftp_opendir(php_stream_wrapper *wrapper, const char *pat
goto opendir_errexit;
}

php_stream_context_set(datastream, context);
php_stream_context_set(datastream, context TSRMLS_CC);

if (use_ssl_on_data && (php_stream_xport_crypto_setup(stream,
STREAM_CRYPTO_METHOD_SSLv23_CLIENT, NULL TSRMLS_CC) < 0 ||
Expand Down
2 changes: 1 addition & 1 deletion ext/standard/http_fopen_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper,
eol_detect = stream->flags & (PHP_STREAM_FLAG_DETECT_EOL | PHP_STREAM_FLAG_EOL_MAC);
stream->flags &= ~(PHP_STREAM_FLAG_DETECT_EOL | PHP_STREAM_FLAG_EOL_MAC);

php_stream_context_set(stream, context);
php_stream_context_set(stream, context TSRMLS_CC);

php_stream_notify_info(context, PHP_STREAM_NOTIFY_CONNECT, NULL, 0);

Expand Down
2 changes: 1 addition & 1 deletion main/streams/php_stream_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ END_EXTERN_C()
BEGIN_EXTERN_C()
PHPAPI void php_stream_notification_notify(php_stream_context *context, int notifycode, int severity,
char *xmsg, int xcode, size_t bytes_sofar, size_t bytes_max, void * ptr TSRMLS_DC);
PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream_context *context);
PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream_context *context TSRMLS_DC);
END_EXTERN_C()

#define php_stream_notify_info(context, code, xmsg, xcode) do { if ((context) && (context)->notifier) { \
Expand Down
3 changes: 1 addition & 2 deletions main/streams/streams.c
Original file line number Diff line number Diff line change
Expand Up @@ -2148,10 +2148,9 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
/* }}} */

/* {{{ context API */
PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream_context *context)
PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream_context *context TSRMLS_DC)
{
php_stream_context *oldcontext = stream->context;
TSRMLS_FETCH();

stream->context = context;

Expand Down
2 changes: 1 addition & 1 deletion main/streams/transports.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in
context STREAMS_REL_CC TSRMLS_CC);

if (stream) {
php_stream_context_set(stream, context);
php_stream_context_set(stream, context TSRMLS_CC);

if ((flags & STREAM_XPORT_SERVER) == 0) {
/* client */
Expand Down

0 comments on commit c835981

Please sign in to comment.