]> granicus.if.org Git - php/commitdiff
- Fixed bug #49052 (context option headers freed too early when using --with-curlwrap...
authorJani Taskinen <jani@php.net>
Sat, 25 Jul 2009 13:00:25 +0000 (13:00 +0000)
committerJani Taskinen <jani@php.net>
Sat, 25 Jul 2009 13:00:25 +0000 (13:00 +0000)
NEWS
ext/curl/streams.c

diff --git a/NEWS b/NEWS
index af3b0cfc9b8811be8c75c06d265074314900b51e..64a2f34f4fc7c458a18c32a6f846163f6de2542c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ PHP                                                                        NEWS
 - Fixed regression in cURL extension that prevented flush of data to output
   defined as a file handle. (Ilia)
 
+- Fixed bug #49052 (context option headers freed too early when using
+  --with-curlwrappers). (Jani)
 - Fixed bug #49032 (SplFileObject::fscanf() variables passed by reference).
   (Jani)
 - Fixed bug #48980 (Crash when compiling with pdo_firebird). (Felipe)
index e56a3aec318344bcd86be4452aa16892fa6936f8..22ea72b0f3091f8849fb90e7a697bcc1ea854277 100644 (file)
@@ -469,8 +469,7 @@ php_stream *php_curl_stream_opener(php_stream_wrapper *wrapper, char *filename,
 #else 
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "There was an error mcode=%d", m);
 #endif
-                       php_stream_close(stream);
-                       return NULL;
+                       goto exit_fail;
                }
                
                /* we have only one curl handle here, even though we use multi syntax, 
@@ -488,14 +487,23 @@ php_stream *php_curl_stream_opener(php_stream_wrapper *wrapper, char *filename,
                        }
                }
                if (msg_found) {
-                       php_stream_close(stream);
-                       return NULL;
+                       goto exit_fail;
                }
        }
+
+       /* context headers are not needed anymore */
        if (slist) {
+               curl_easy_setopt(curlstream->curl, CURLOPT_HTTPHEADER, NULL);
                curl_slist_free_all(slist);
        }
        return stream;
+
+exit_fail:
+       php_stream_close(stream);
+       if (slist) {
+               curl_slist_free_all(slist);
+       }
+       return NULL;
 }
 
 static php_stream_wrapper_ops php_curl_wrapper_ops = {