tony2001 Thu Oct 5 15:06:11 2006 UTC Modified files: /php-src/ext/curl multi.c php_curl.h Log: decrement ch->uses (or destroy handle) when destroying multi handle http://cvs.php.net/viewvc.cgi/php-src/ext/curl/multi.c?r1=1.26&r2=1.27&diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.26 php-src/ext/curl/multi.c:1.27 --- php-src/ext/curl/multi.c:1.26 Fri Sep 15 15:04:03 2006 +++ php-src/ext/curl/multi.c Thu Oct 5 15:06:11 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: multi.c,v 1.26 2006/09/15 15:04:03 tony2001 Exp $ */ +/* $Id: multi.c,v 1.27 2006/10/05 15:06:11 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.46&r2=1.47&diff_format=u Index: php-src/ext/curl/php_curl.h diff -u php-src/ext/curl/php_curl.h:1.46 php-src/ext/curl/php_curl.h:1.47 --- php-src/ext/curl/php_curl.h:1.46 Sun Jan 1 13:09:48 2006 +++ php-src/ext/curl/php_curl.h Thu Oct 5 15:06:11 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_curl.h,v 1.46 2006/01/01 13:09:48 sniper Exp $ */ +/* $Id: php_curl.h,v 1.47 2006/10/05 15:06:11 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