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

Reply via email to