iliaa           Tue Aug 29 17:10:53 2006 UTC

  Modified files:              
    /php-src/ext/curl   interface.c 
  Log:
  MFB: Fixed bug #38637 (curl_copy_handle() fails to fully copy the cURL
  handle).
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.87&r2=1.88&diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.87 php-src/ext/curl/interface.c:1.88
--- php-src/ext/curl/interface.c:1.87   Thu Aug 10 19:02:32 2006
+++ php-src/ext/curl/interface.c        Tue Aug 29 17:10:52 2006
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: interface.c,v 1.87 2006/08/10 19:02:32 iliaa Exp $ */
+/* $Id: interface.c,v 1.88 2006/08/29 17:10:52 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -1137,7 +1137,7 @@
        }
 
        alloc_curl_handle(&dupch);
-       TSRMLS_SET_CTX(ch->thread_ctx);
+       TSRMLS_SET_CTX(dupch->thread_ctx);
 
        dupch->cp = cp;
        dupch->handlers->write->method = ch->handlers->write->method;
@@ -1145,6 +1145,38 @@
        dupch->handlers->read->method  = ch->handlers->read->method;
        dupch->handlers->write_header->method = 
ch->handlers->write_header->method;
 
+       dupch->handlers->write->fp = ch->handlers->write->fp;
+       dupch->handlers->write_header->fp = ch->handlers->write_header->fp;
+       dupch->handlers->read->fp = ch->handlers->read->fp;
+       dupch->handlers->read->fd = ch->handlers->read->fd;
+
+       if (ch->handlers->passwd) {
+               zval_add_ref(&ch->handlers->passwd);
+               dupch->handlers->passwd = ch->handlers->passwd;
+               curl_easy_setopt(ch->cp, CURLOPT_PASSWDDATA, (void *) dupch);
+       }
+       if (ch->handlers->write->func_name) {
+               zval_add_ref(&ch->handlers->write->func_name);
+               dupch->handlers->write->func_name = 
ch->handlers->write->func_name;
+       }
+       if (ch->handlers->read->func_name) {
+               zval_add_ref(&ch->handlers->read->func_name);
+               dupch->handlers->read->func_name = 
ch->handlers->read->func_name;
+       }
+       if (ch->handlers->write_header->func_name) {
+               zval_add_ref(&ch->handlers->write_header->func_name);
+               dupch->handlers->write_header->func_name = 
ch->handlers->write_header->func_name;
+       }
+
+       curl_easy_setopt(dupch->cp, CURLOPT_ERRORBUFFER,       dupch->err.str);
+       curl_easy_setopt(dupch->cp, CURLOPT_FILE,              (void *) dupch);
+       curl_easy_setopt(dupch->cp, CURLOPT_INFILE,            (void *) dupch);
+       curl_easy_setopt(dupch->cp, CURLOPT_WRITEHEADER,       (void *) dupch);
+
+       zend_llist_copy(&dupch->to_free.str, &ch->to_free.str);
+       zend_llist_copy(&dupch->to_free.slist, &ch->to_free.slist);
+       zend_llist_copy(&dupch->to_free.post, &ch->to_free.post);
+
        ZEND_REGISTER_RESOURCE(return_value, dupch, le_curl);
        dupch->id = Z_LVAL_P(return_value);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to