From: Ilia Alshanetsky Date: Thu, 5 Oct 2006 00:38:02 +0000 (+0000) Subject: Fixed bug #39039 (SSL: fatal protocol error when fetching HTTPS from X-Git-Tag: php-5.2.0RC5~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d9f9b67b766a8c1ae0b1bc9e5f8c71226c77603;p=php Fixed bug #39039 (SSL: fatal protocol error when fetching HTTPS from servers running Google web server). --- 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));