summaryrefslogtreecommitdiff
path: root/ext/soap/php_http.c
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2016-10-20 05:19:10 +0100
committerJoe Watkins <krakjoe@php.net>2016-10-20 05:19:10 +0100
commit295377630a7a929fd09e68b3500abce627c94cde (patch)
tree47add0a402d35d29916822ba6c4fd745d24b7b57 /ext/soap/php_http.c
parentb754bc797cf92f4b2617f4761e4fbb33d00f1202 (diff)
parent3b9ba6195db2c17147b0fed4af3398320967002f (diff)
downloadphp-git-295377630a7a929fd09e68b3500abce627c94cde.tar.gz
Merge branch 'pull-request/2152' into PHP-7.0
Diffstat (limited to 'ext/soap/php_http.c')
-rw-r--r--ext/soap/php_http.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 7c9183613c..0659bd710e 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -161,7 +161,7 @@ void http_context_headers(php_stream_context* context,
static php_stream* http_connect(zval* this_ptr, php_url *phpurl, int use_ssl, php_stream_context *context, int *use_proxy)
{
php_stream *stream;
- zval *proxy_host, *proxy_port, *tmp;
+ zval *proxy_host, *proxy_port, *tmp, ssl_proxy_peer_name;
char *host;
char *name;
char *protocol;
@@ -241,6 +241,13 @@ static php_stream* http_connect(zval* this_ptr, php_url *phpurl, int use_ssl, ph
if (stream && *use_proxy && use_ssl) {
smart_str soap_headers = {0};
+ /* Set peer_name or name verification will try to use the proxy server name */
+ if (!context || (tmp = php_stream_context_get_option(context, "ssl", "peer_name")) == NULL) {
+ ZVAL_STRING(&ssl_proxy_peer_name, phpurl->host);
+ php_stream_context_set_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_name", &ssl_proxy_peer_name);
+ zval_ptr_dtor(&ssl_proxy_peer_name);
+ }
+
smart_str_append_const(&soap_headers, "CONNECT ");
smart_str_appends(&soap_headers, phpurl->host);
smart_str_appendc(&soap_headers, ':');