iliaa           Wed Mar 10 19:11:20 2004 EDT

  Modified files:              
    /php-src/ext/curl   interface.c multi.c php_curl.h 
  Log:
  Fixed memory leak in the multi interface.
  Fixed proto of curl_multi_exec().
  Fixed crash in curl resource attached to curl multi resource is manually
  freed via curl_close().
  
  
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.33&r2=1.34&ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.33 php-src/ext/curl/interface.c:1.34
--- php-src/ext/curl/interface.c:1.33   Tue Mar  9 12:11:22 2004
+++ php-src/ext/curl/interface.c        Wed Mar 10 19:11:18 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: interface.c,v 1.33 2004/03/09 17:11:22 rasmus Exp $ */
+/* $Id: interface.c,v 1.34 2004/03/11 00:11:18 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -1333,8 +1333,11 @@
        }
 
        ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
-       
-       zend_list_delete(Z_LVAL_PP(zid));
+       if (ch->uses) { 
+               ch->uses--;
+       } else {
+               zend_list_delete(Z_LVAL_PP(zid));
+       }
 }
 /* }}} */
 
http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.14&r2=1.15&ty=u
Index: php-src/ext/curl/multi.c
diff -u php-src/ext/curl/multi.c:1.14 php-src/ext/curl/multi.c:1.15
--- php-src/ext/curl/multi.c:1.14       Tue Mar  9 10:04:16 2004
+++ php-src/ext/curl/multi.c    Wed Mar 10 19:11:18 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: multi.c,v 1.14 2004/03/09 15:04:16 iliaa Exp $ */
+/* $Id: multi.c,v 1.15 2004/03/11 00:11:18 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -62,6 +62,8 @@
        mh = ecalloc(1, sizeof(php_curlm));
        mh->multi = curl_multi_init();
 
+       zend_llist_init(&(*mh).easyh, sizeof(zval *), (llist_dtor_func_t) 
ZVAL_PTR_DTOR, 0);
+
        ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle);
 }
 /* }}} */
@@ -86,7 +88,9 @@
 
        _php_curl_cleanup_handle(ch);
        ch->uses++;
-       
+
+       zend_llist_add_element(&(*mh).easyh, &z_ch);
+
        RETURN_LONG((long) curl_multi_add_handle(mh->multi, ch->cp));   
 }
 /* }}} */
@@ -152,7 +156,7 @@
 }
 /* }}} */
 
-/* {{{ proto int curl_multi_exec(resource mh) 
+/* {{{ proto int curl_multi_exec(resource mh, int &still_running) 
    Run the sub-connections of the current cURL handle */
 PHP_FUNCTION(curl_multi_exec)
 {
@@ -252,10 +256,10 @@
        php_curlm *mh = (php_curlm *) rsrc->ptr;
        if (mh) {
                curl_multi_cleanup(mh->multi);
+               zend_llist_clean(&(*mh).easyh);
                efree(mh);
                rsrc->ptr = NULL;
        }
-       /* XXX: keep track of all curl handles and zval_ptr_dtor them here */
 }
 
 #endif
http://cvs.php.net/diff.php/php-src/ext/curl/php_curl.h?r1=1.39&r2=1.40&ty=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.39 php-src/ext/curl/php_curl.h:1.40
--- php-src/ext/curl/php_curl.h:1.39    Thu Jan  8 12:31:54 2004
+++ php-src/ext/curl/php_curl.h Wed Mar 10 19:11:18 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_curl.h,v 1.39 2004/01/08 17:31:54 sniper Exp $ */
+/* $Id: php_curl.h,v 1.40 2004/03/11 00:11:18 iliaa Exp $ */
 
 #ifndef _PHP_CURL_H
 #define _PHP_CURL_H
@@ -125,6 +125,7 @@
 typedef struct {
        int    still_running;
        CURLM *multi;
+       zend_llist easyh;
 } php_curlm;
 
 void _php_curl_cleanup_handle(php_curl *);

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

Reply via email to