diff options
Diffstat (limited to 'ext/soap/php_http.c')
| -rw-r--r-- | ext/soap/php_http.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c index 1652853bcf..cb7622fdff 100644 --- a/ext/soap/php_http.c +++ b/ext/soap/php_http.c @@ -811,7 +811,22 @@ try_again: efree(cookie); } - if (!get_http_body(stream, !http_1_1, http_headers, &http_body, &http_body_size TSRMLS_CC)) { + if (http_1_1) { + http_close = FALSE; + if (use_proxy && !use_ssl) { + connection = get_http_header_value(http_headers,"Proxy-Connection: "); + if (connection) { + if (strncasecmp(connection, "close", sizeof("close")-1) == 0) { + http_close = TRUE; + } + efree(connection); + } + } + } else { + http_close = TRUE; + } + + if (!get_http_body(stream, http_close, http_headers, &http_body, &http_body_size TSRMLS_CC)) { if (request != buf) {efree(request);} php_stream_close(stream); efree(http_headers); |
