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