]> 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)
ext/curl/streams.c

index 05e00fcc4d15df360597bbe368380af3393376b3..51d540dbe8b3669f613416b8e9aee7311669ecf6 100644 (file)
@@ -474,8 +474,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, 
@@ -493,14 +492,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 = {