iliaa Wed Mar 10 19:11:20 2004 EDT
Modified files:
/php-src/ext/curl interface.c multi.c php_curl.h
Log:
Fixed memory leak in the multi interface.
Fixed proto of curl_multi_exec().
Fixed crash in curl resource attached to curl multi resource is manually
freed via curl_close().
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.33&r2=1.34&ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.33 php-src/ext/curl/interface.c:1.34
--- php-src/ext/curl/interface.c:1.33 Tue Mar 9 12:11:22 2004
+++ php-src/ext/curl/interface.c Wed Mar 10 19:11:18 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interface.c,v 1.33 2004/03/09 17:11:22 rasmus Exp $ */
+/* $Id: interface.c,v 1.34 2004/03/11 00:11:18 iliaa Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -1333,8 +1333,11 @@
}
ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
-
- zend_list_delete(Z_LVAL_PP(zid));
+ if (ch->uses) {
+ ch->uses--;
+ } else {
+ zend_list_delete(Z_LVAL_PP(zid));
+ }
}
/* }}} */
http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.14&r2=1.15&ty=u
Index: php-src/ext/curl/multi.c
diff -u php-src/ext/curl/multi.c:1.14 php-src/ext/curl/multi.c:1.15
--- php-src/ext/curl/multi.c:1.14 Tue Mar 9 10:04:16 2004
+++ php-src/ext/curl/multi.c Wed Mar 10 19:11:18 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: multi.c,v 1.14 2004/03/09 15:04:16 iliaa Exp $ */
+/* $Id: multi.c,v 1.15 2004/03/11 00:11:18 iliaa Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -62,6 +62,8 @@
mh = ecalloc(1, sizeof(php_curlm));
mh->multi = curl_multi_init();
+ zend_llist_init(&(*mh).easyh, sizeof(zval *), (llist_dtor_func_t)
ZVAL_PTR_DTOR, 0);
+
ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle);
}
/* }}} */
@@ -86,7 +88,9 @@
_php_curl_cleanup_handle(ch);
ch->uses++;
-
+
+ zend_llist_add_element(&(*mh).easyh, &z_ch);
+
RETURN_LONG((long) curl_multi_add_handle(mh->multi, ch->cp));
}
/* }}} */
@@ -152,7 +156,7 @@
}
/* }}} */
-/* {{{ proto int curl_multi_exec(resource mh)
+/* {{{ proto int curl_multi_exec(resource mh, int &still_running)
Run the sub-connections of the current cURL handle */
PHP_FUNCTION(curl_multi_exec)
{
@@ -252,10 +256,10 @@
php_curlm *mh = (php_curlm *) rsrc->ptr;
if (mh) {
curl_multi_cleanup(mh->multi);
+ zend_llist_clean(&(*mh).easyh);
efree(mh);
rsrc->ptr = NULL;
}
- /* XXX: keep track of all curl handles and zval_ptr_dtor them here */
}
#endif
http://cvs.php.net/diff.php/php-src/ext/curl/php_curl.h?r1=1.39&r2=1.40&ty=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.39 php-src/ext/curl/php_curl.h:1.40
--- php-src/ext/curl/php_curl.h:1.39 Thu Jan 8 12:31:54 2004
+++ php-src/ext/curl/php_curl.h Wed Mar 10 19:11:18 2004
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_curl.h,v 1.39 2004/01/08 17:31:54 sniper Exp $ */
+/* $Id: php_curl.h,v 1.40 2004/03/11 00:11:18 iliaa Exp $ */
#ifndef _PHP_CURL_H
#define _PHP_CURL_H
@@ -125,6 +125,7 @@
typedef struct {
int still_running;
CURLM *multi;
+ zend_llist easyh;
} php_curlm;
void _php_curl_cleanup_handle(php_curl *);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php