com php-src: Improve resource management for curl handle: ext/curl/interface.c ext/curl/multi.c ext/curl/php_curl.h
| From: | Pierrick Charron | Date: | Sat, 05 Jan 2013 16:07:59 +0000 |
| Subject: | com php-src: Improve resource management for curl handle: ext/curl/interface.c ext/curl/multi.c ext/curl/php_curl.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-70856@lists.php.net to get a copy of this message | ||
Commit: f85e5950ab4552799c119cd1d23617535ed19e61
Author: Pierrick Charron <pierrick@php.net> Sat, 5 Jan 2013 11:07:59 -0500
Parents: c4f2a20f150c6e2b453cdd16f5ca1715ab150f7a
Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f85e5950ab4552799c119cd1d23617535ed19e61
Log:
Improve resource management for curl handle
Previous implementation was using its own refcounting (uses field of
the php_curl struct). zend_list_add/remove already implements its own
refcount, so we don't need to use an other one.
Changed paths:
M ext/curl/interface.c
M ext/curl/multi.c
M ext/curl/php_curl.h
Diff:
diff --git a/ext/curl/interface.c b/ext/curl/interface.c
index e0c95ef..2e05581 100644
--- a/ext/curl/interface.c
+++ b/ext/curl/interface.c
@@ -1952,8 +1952,6 @@ PHP_FUNCTION(curl_init)
ch->handlers->read->method = PHP_CURL_DIRECT;
ch->handlers->write_header->method = PHP_CURL_IGNORE;
- ch->uses = 0;
-
MAKE_STD_ZVAL(clone);
ch->clone = clone;
@@ -1995,8 +1993,7 @@ PHP_FUNCTION(curl_copy_handle)
TSRMLS_SET_CTX(dupch->thread_ctx);
dupch->cp = cp;
- dupch->uses = 0;
- ch->uses++;
+ zend_list_addref(Z_LVAL_P(zid));
if (ch->handlers->write->stream) {
Z_ADDREF_P(ch->handlers->write->stream);
}
@@ -3210,11 +3207,7 @@ PHP_FUNCTION(curl_close)
return;
}
- if (ch->uses) {
- ch->uses--;
- } else {
- zend_list_delete(Z_LVAL_P(zid));
- }
+ zend_list_delete(Z_LVAL_P(zid));
}
/* }}} */
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index d84669a...af78651 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -86,7 +86,6 @@ PHP_FUNCTION(curl_multi_add_handle)
ZEND_FETCH_RESOURCE(ch, php_curl *, &z_ch, -1, le_curl_name, le_curl);
_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" */
tmp_val = *z_ch;
@@ -113,11 +112,7 @@ void _php_curl_multi_cleanup_list(void *data) /* {{{ */
return;
}
- if (ch->uses) {
- ch->uses--;
- } else {
- zend_list_delete(Z_LVAL_P(z_ch));
- }
+ zend_list_delete(Z_LVAL_P(z_ch));
}
/* }}} */
@@ -146,12 +141,12 @@ PHP_FUNCTION(curl_multi_remove_handle)
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);
- --ch->uses;
+
+ RETVAL_LONG((long) curl_multi_remove_handle(mh->multi, ch->cp));
zend_llist_del_element( &mh->easyh, &z_ch,
(int (*)(void *, void *)) curl_compare_resources );
-
- RETURN_LONG((long) curl_multi_remove_handle(mh->multi, ch->cp));
+
}
/* }}} */
diff --git a/ext/curl/php_curl.h b/ext/curl/php_curl.h
index 5c24fc1..a8c26c0 100644
--- a/ext/curl/php_curl.h
+++ b/ext/curl/php_curl.h
@@ -169,7 +169,6 @@ typedef struct {
CURL *cp;
php_curl_handlers *handlers;
long id;
- unsigned int uses;
zend_bool in_callback;
zval *clone;
} php_curl;