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