tony2001 Thu Oct 5 15:06:41 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/curl multi.c php_curl.h Log: MFH: decrement ch->uses (or destroy handle) when destroying multi handle http://cvs.php.net/viewvc.cgi/php-src/ext/curl/multi.c?r1=1.19.2.3.2.4&r2=1.19.2.3.2.5&diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.19.2.3.2.4 php-src/ext/curl/multi.c:1.19.2.3.2.5 --- php-src/ext/curl/multi.c:1.19.2.3.2.4 Fri Sep 15 15:04:59 2006 +++ php-src/ext/curl/multi.c Thu Oct 5 15:06:40 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: multi.c,v 1.19.2.3.2.4 2006/09/15 15:04:59 tony2001 Exp $ */ +/* $Id: multi.c,v 1.19.2.3.2.5 2006/10/05 15:06:40 tony2001 Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -62,7 +62,7 @@ mh = ecalloc(1, sizeof(php_curlm)); mh->multi = curl_multi_init(); - zend_llist_init(&mh->easyh, sizeof(zval), (llist_dtor_func_t) NULL, 0); + zend_llist_init(&mh->easyh, sizeof(zval), _php_curl_multi_cleanup_list, 0); ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle); } @@ -98,6 +98,27 @@ } /* }}} */ +void _php_curl_multi_cleanup_list(void *data) /* {{{ */ +{ + zval *z_ch = (zval *)data; + php_curl *ch; + + if (!z_ch) { + return; + } + + ch = (php_curl *) zend_fetch_resource(&z_ch TSRMLS_CC, -1, le_curl_name, NULL, 1, le_curl); + if (!ch) { + return; + } + + if (ch->uses) { + ch->uses--; + } else { + zend_list_delete(Z_LVAL_P(z_ch)); + } +} +/* }}} */ /* Used internally as comparison routine passed to zend_list_del_element */ static int curl_compare_resources( zval *z1, zval **z2 ) http://cvs.php.net/viewvc.cgi/php-src/ext/curl/php_curl.h?r1=1.44.2.2&r2=1.44.2.2.2.1&diff_format=u Index: php-src/ext/curl/php_curl.h diff -u php-src/ext/curl/php_curl.h:1.44.2.2 php-src/ext/curl/php_curl.h:1.44.2.2.2.1 --- php-src/ext/curl/php_curl.h:1.44.2.2 Tue Jan 24 20:11:14 2006 +++ php-src/ext/curl/php_curl.h Thu Oct 5 15:06:40 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_curl.h,v 1.44.2.2 2006/01/24 20:11:14 iliaa Exp $ */ +/* $Id: php_curl.h,v 1.44.2.2.2.1 2006/10/05 15:06:40 tony2001 Exp $ */ #ifndef _PHP_CURL_H #define _PHP_CURL_H @@ -138,6 +138,7 @@ } php_curlm; void _php_curl_cleanup_handle(php_curl *); +void _php_curl_multi_cleanup_list(void *data); /* streams support */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php