[PHP-CVS] cvs: php-src /ext/curl multi.c php_curl.h
tony2001Thu 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.26r2=1.27diff_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.cThu 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.46r2=1.47diff_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.46Sun 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
[PHP-CVS] cvs: php-src /ext/curl multi.c
sebastian Fri Oct 6 03:49:04 2006 UTC Modified files: /php-src/ext/curl multi.c Log: MFB: Fix ZTS build. http://cvs.php.net/viewvc.cgi/php-src/ext/curl/multi.c?r1=1.27r2=1.28diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.27 php-src/ext/curl/multi.c:1.28 --- php-src/ext/curl/multi.c:1.27 Thu Oct 5 15:06:11 2006 +++ php-src/ext/curl/multi.cFri Oct 6 03:49:04 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.27 2006/10/05 15:06:11 tony2001 Exp $ */ +/* $Id: multi.c,v 1.28 2006/10/06 03:49:04 sebastian Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -102,6 +102,7 @@ { zval *z_ch = (zval *)data; php_curl *ch; + TSRMLS_FETCH(); if (!z_ch) { return; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
tony2001Fri Sep 15 15:04:03 2006 UTC Modified files: /php-src/ext/curl multi.c Log: fix segfault in curl_multi_info_read() http://cvs.php.net/viewvc.cgi/php-src/ext/curl/multi.c?r1=1.25r2=1.26diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.25 php-src/ext/curl/multi.c:1.26 --- php-src/ext/curl/multi.c:1.25 Mon Sep 4 16:31:38 2006 +++ php-src/ext/curl/multi.cFri Sep 15 15:04:03 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.25 2006/09/04 16:31:38 iliaa Exp $ */ +/* $Id: multi.c,v 1.26 2006/09/15 15:04:03 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), (llist_dtor_func_t) NULL, 0); ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle); } @@ -250,12 +250,12 @@ { zend_llist_position pos; php_curl *ch; - zval**pz_ch; + zval*pz_ch; /* search the list of easy handles hanging off the multi-handle */ - for(pz_ch = (zval **)zend_llist_get_first_ex(mh-easyh, pos); pz_ch; - pz_ch = (zval **)zend_llist_get_next_ex(mh-easyh, pos)) { - ZEND_FETCH_RESOURCE(ch, php_curl *, pz_ch, -1, le_curl_name, le_curl); + for(pz_ch = (zval *)zend_llist_get_first_ex(mh-easyh, pos); pz_ch; + pz_ch = (zval *)zend_llist_get_next_ex(mh-easyh, pos)) { + ZEND_FETCH_RESOURCE(ch, php_curl *, pz_ch, -1, le_curl_name, le_curl); if (ch-cp == tmp_msg-easy_handle) { /* we are adding a reference to the underlying php_curl @@ -266,12 +266,12 @@ SEPARATE_ZVAL, but those create new zvals, which is already being done in add_assoc_resource */ - zend_list_addref( Z_RESVAL_PP( pz_ch ) ); + zend_list_addref( Z_RESVAL_P( pz_ch ) ); /* add_assoc_resource automatically creates a new zval to wrap the resource represented by the current pz_ch */ - add_assoc_resource(return_value, handle, Z_RESVAL_PP(pz_ch)); + add_assoc_resource(return_value, handle, Z_RESVAL_P(pz_ch)); break; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
iliaa Mon Sep 4 16:31:38 2006 UTC Modified files: /php-src/ext/curl multi.c Log: MFB: Fixed bug #38693 (curl_multi_add_handle() set curl handle to null). http://cvs.php.net/viewvc.cgi/php-src/ext/curl/multi.c?r1=1.24r2=1.25diff_format=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.24 php-src/ext/curl/multi.c:1.25 --- php-src/ext/curl/multi.c:1.24 Sat Jun 10 22:59:40 2006 +++ php-src/ext/curl/multi.cMon Sep 4 16:31:38 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.24 2006/06/10 22:59:40 bjori Exp $ */ +/* $Id: multi.c,v 1.25 2006/09/04 16:31:38 iliaa 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) ZVAL_PTR_DTOR, 0); + zend_llist_init(mh-easyh, sizeof(zval *), (llist_dtor_func_t) NULL, 0); ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle); } @@ -76,6 +76,7 @@ zval *z_ch; php_curlm *mh; php_curl *ch; + zval tmp_val; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, rr, z_mh, z_ch) == FAILURE) { return; @@ -87,11 +88,11 @@ _php_curl_cleanup_handle(ch); ch-uses++; - /* we want to create a copy of this zval that we store in the multihandle - structure element easyh - so we separate it from the original - input zval to this function using SEPARATE_ZVAL */ - SEPARATE_ZVAL( z_ch ); - zend_llist_add_element(mh-easyh, z_ch); + /* we want to create a copy of this zval that we store in the multihandle structure element easyh */ + tmp_val = *z_ch; + zval_copy_ctor(tmp_val); + + zend_llist_add_element(mh-easyh, tmp_val); RETURN_LONG((long) curl_multi_add_handle(mh-multi, ch-cp)); } @@ -99,11 +100,11 @@ /* Used internally as comparison routine passed to zend_list_del_element */ -static int curl_compare_resources( zval **z1, zval **z2 ) +static int curl_compare_resources( zval *z1, zval **z2 ) { - return (Z_TYPE_PP( z1 ) == Z_TYPE_PP( z2 ) -Z_TYPE_PP( z1 ) == IS_RESOURCE -Z_LVAL_PP( z1 ) == Z_LVAL_PP( z2 ) ); + return (Z_TYPE_P( z1 ) == Z_TYPE_PP( z2 ) +Z_TYPE_P( z1 ) == IS_RESOURCE +Z_LVAL_P( z1 ) == Z_LVAL_PP( z2 ) ); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
iliaa Thu Sep 8 10:50:00 2005 EDT Modified files: /php-src/ext/curl multi.c Log: Fixed bug #34420 (Possible crash inside curl_multi_remove_handle()). http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.19r2=1.20ty=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.19 php-src/ext/curl/multi.c:1.20 --- php-src/ext/curl/multi.c:1.19 Wed Aug 3 10:06:44 2005 +++ php-src/ext/curl/multi.cThu Sep 8 10:49:58 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.19 2005/08/03 14:06:44 sniper Exp $ */ +/* $Id: multi.c,v 1.20 2005/09/08 14:49:58 iliaa Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -111,8 +111,6 @@ ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle); ZEND_FETCH_RESOURCE(ch, php_curl *, z_ch, -1, le_curl_name, le_curl); - zval_ptr_dtor(z_ch); - --ch-uses; RETURN_LONG((long) curl_multi_remove_handle(mh-multi, ch-cp)); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
sterlingFri Sep 10 16:36:46 2004 EDT Modified files: /php-src/ext/curl multi.c Log: fix wrong check from return value, binary content should not be \0'd, non-binary content should be \0'd. http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.16r2=1.17ty=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.16 php-src/ext/curl/multi.c:1.17 --- php-src/ext/curl/multi.c:1.16 Wed Mar 10 19:27:16 2004 +++ php-src/ext/curl/multi.cFri Sep 10 16:36:45 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.16 2004/03/11 00:27:16 iliaa Exp $ */ +/* $Id: multi.c,v 1.17 2004/09/10 20:36:45 sterling Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -195,7 +195,7 @@ ZEND_FETCH_RESOURCE(ch, php_curl *, z_ch, -1, le_curl_name, le_curl); if (ch-handlers-write-method == PHP_CURL_RETURN ch-handlers-write-buf.len 0) { - if (ch-handlers-write-type == PHP_CURL_BINARY) { + if (ch-handlers-write-type != PHP_CURL_BINARY) { smart_str_0(ch-handlers-write-buf); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
iliaa Wed Mar 10 19:27:17 2004 EDT Modified files: /php-src/ext/curl multi.c Log: Readability++ http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.15r2=1.16ty=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.15 php-src/ext/curl/multi.c:1.16 --- php-src/ext/curl/multi.c:1.15 Wed Mar 10 19:11:18 2004 +++ php-src/ext/curl/multi.cWed Mar 10 19:27:16 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.15 2004/03/11 00:11:18 iliaa Exp $ */ +/* $Id: multi.c,v 1.16 2004/03/11 00:27:16 iliaa 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) ZVAL_PTR_DTOR, 0); + 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); } @@ -89,7 +89,7 @@ _php_curl_cleanup_handle(ch); ch-uses++; - zend_llist_add_element((*mh).easyh, z_ch); + zend_llist_add_element(mh-easyh, z_ch); RETURN_LONG((long) curl_multi_add_handle(mh-multi, ch-cp)); } @@ -256,7 +256,7 @@ php_curlm *mh = (php_curlm *) rsrc-ptr; if (mh) { curl_multi_cleanup(mh-multi); - zend_llist_clean((*mh).easyh); + zend_llist_clean(mh-easyh); efree(mh); rsrc-ptr = NULL; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/curl multi.c
iliaa Tue Mar 9 10:04:17 2004 EDT Modified files: /php-src/ext/curl multi.c Log: Fixed memory leak with curl_multi_init() de-initialization. http://cvs.php.net/diff.php/php-src/ext/curl/multi.c?r1=1.13r2=1.14ty=u Index: php-src/ext/curl/multi.c diff -u php-src/ext/curl/multi.c:1.13 php-src/ext/curl/multi.c:1.14 --- php-src/ext/curl/multi.c:1.13 Thu Jan 8 03:14:37 2004 +++ php-src/ext/curl/multi.cTue Mar 9 10:04:16 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: multi.c,v 1.13 2004/01/08 08:14:37 andi Exp $ */ +/* $Id: multi.c,v 1.14 2004/03/09 15:04:16 iliaa Exp $ */ #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS @@ -250,7 +250,11 @@ void _php_curl_multi_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) { php_curlm *mh = (php_curlm *) rsrc-ptr; - curl_multi_cleanup(mh-multi); + if (mh) { + curl_multi_cleanup(mh-multi); + efree(mh); + rsrc-ptr = NULL; + } /* XXX: keep track of all curl handles and zval_ptr_dtor them here */ } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php