summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--ext/openssl/xp_ssl.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index be687953d5..bb0e30b0a6 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@ PHP NEWS
working exactly like in php.ini; with FastCGI -d affects all requests).
(Dmitry)
- Fixed missing open_basedir check inside chdir() function. (Ilia)
+- Fixed bug #39039 (SSL: fatal protocol error when fetching HTTPS from
+ servers running Google web server). (Ilia)
- Fixed bug #39035 (Compatibilty issue between DOM and
zend.ze1_compatibility_mode). (Rob)
- Fixed bug #39032 (strcspn() stops on null character). (Tony)
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 504ae8bd4d..03d07dfae1 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -57,17 +57,20 @@ php_stream_ops php_openssl_socket_ops;
* in an error condition arising from a network connection problem */
static int is_http_stream_talking_to_iis(php_stream *stream TSRMLS_DC)
{
- if (stream->wrapperdata && stream->wrapper && strcmp(stream->wrapper->wops->label, "HTTP") == 0) {
+ if (stream->wrapperdata && stream->wrapper && strcasecmp(stream->wrapper->wops->label, "HTTP") == 0) {
/* the wrapperdata is an array zval containing the headers */
zval **tmp;
#define SERVER_MICROSOFT_IIS "Server: Microsoft-IIS"
+#define SERVER_GOOGLE "Server: GFE/"
zend_hash_internal_pointer_reset(Z_ARRVAL_P(stream->wrapperdata));
while (SUCCESS == zend_hash_get_current_data(Z_ARRVAL_P(stream->wrapperdata), (void**)&tmp)) {
if (strncasecmp(Z_STRVAL_PP(tmp), SERVER_MICROSOFT_IIS, sizeof(SERVER_MICROSOFT_IIS)-1) == 0) {
return 1;
+ } else if (strncasecmp(Z_STRVAL_PP(tmp), SERVER_GOOGLE, sizeof(SERVER_GOOGLE)-1) == 0) {
+ return 1;
}
zend_hash_move_forward(Z_ARRVAL_P(stream->wrapperdata));