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