]> granicus.if.org Git - php/commitdiff
Fixed bug #39039 (SSL: fatal protocol error when fetching HTTPS from
authorIlia Alshanetsky <iliaa@php.net>
Thu, 5 Oct 2006 00:38:02 +0000 (00:38 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 5 Oct 2006 00:38:02 +0000 (00:38 +0000)
servers running Google web server).

NEWS
ext/openssl/xp_ssl.c

diff --git a/NEWS b/NEWS
index be687953d507eb662f3c489f1ab3961f2434027b..bb0e30b0a60833bb1953a5cf5d8b192085c8c2a7 100644 (file)
--- 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)
index 504ae8bd4d11f62c908dce64e03bcd478c0e42fd..03d07dfae16c668affcce1df6149862bb47f40f1 100644 (file)
@@ -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));