summaryrefslogtreecommitdiff
path: root/ext/curl/multi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/multi.c')
-rw-r--r--ext/curl/multi.c64
1 files changed, 44 insertions, 20 deletions
diff --git a/ext/curl/multi.c b/ext/curl/multi.c
index e3db38b207..0cd4ae2761 100644
--- a/ext/curl/multi.c
+++ b/ext/curl/multi.c
@@ -64,7 +64,7 @@ PHP_FUNCTION(curl_multi_init)
zend_llist_init(&mh->easyh, sizeof(zval), _php_curl_multi_cleanup_list, 0);
- ZEND_REGISTER_RESOURCE(return_value, mh, le_curl_multi_handle);
+ RETURN_RES(zend_register_resource(mh, le_curl_multi_handle));
}
/* }}} */
@@ -82,8 +82,13 @@ PHP_FUNCTION(curl_multi_add_handle)
return;
}
- 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);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
+
+ if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) {
+ RETURN_FALSE;
+ }
_php_curl_cleanup_handle(ch);
@@ -104,13 +109,10 @@ void _php_curl_multi_cleanup_list(void *data) /* {{{ */
if (!z_ch) {
return;
}
-
- if (Z_RES_P(z_ch)->ptr == NULL) {
+ if (!Z_RES_P(z_ch)->ptr) {
return;
}
-
- ch = zend_fetch_resource(z_ch, -1, le_curl_name, NULL, 1, le_curl);
- if (!ch) {
+ if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) {
return;
}
@@ -140,8 +142,13 @@ PHP_FUNCTION(curl_multi_remove_handle)
return;
}
- 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);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
+
+ if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) {
+ RETURN_FALSE;
+ }
RETVAL_LONG((zend_long)curl_multi_remove_handle(mh->multi, ch->cp));
zend_llist_del_element(&mh->easyh, &z_ch, (int (*)(void *, void *))curl_compare_resources);
@@ -176,7 +183,9 @@ PHP_FUNCTION(curl_multi_select)
return;
}
- ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
_make_timeval_struct(&to, timeout);
@@ -206,17 +215,22 @@ PHP_FUNCTION(curl_multi_exec)
return;
}
- ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
{
zend_llist_position pos;
php_curl *ch;
zval *pz_ch;
- for(pz_ch = (zval *)zend_llist_get_first_ex(&mh->easyh, &pos); pz_ch;
+ 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 = (php_curl *)zend_fetch_resource(Z_RES_P(pz_ch), le_curl_name, le_curl)) == NULL) {
+ RETURN_FALSE;
+ }
+
_php_curl_verify_handlers(ch, 1);
}
}
@@ -241,7 +255,9 @@ PHP_FUNCTION(curl_multi_getcontent)
return;
}
- ZEND_FETCH_RESOURCE(ch, php_curl *, z_ch, -1, le_curl_name, le_curl);
+ if ((ch = (php_curl *)zend_fetch_resource(Z_RES_P(z_ch), le_curl_name, le_curl)) == NULL) {
+ RETURN_FALSE;
+ }
if (ch->handlers->write->method == PHP_CURL_RETURN) {
if (!ch->handlers->write->buf.s) {
@@ -269,7 +285,9 @@ PHP_FUNCTION(curl_multi_info_read)
return;
}
- ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
tmp_msg = curl_multi_info_read(mh->multi, &queued_msgs);
if (tmp_msg == NULL) {
@@ -294,7 +312,9 @@ PHP_FUNCTION(curl_multi_info_read)
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 = (php_curl *)zend_fetch_resource(Z_RES_P(pz_ch), le_curl_name, le_curl)) == NULL) {
+ RETURN_FALSE;
+ }
if (ch->cp == tmp_msg->easy_handle) {
/* we are adding a reference to the underlying php_curl
@@ -329,7 +349,9 @@ PHP_FUNCTION(curl_multi_close)
return;
}
- ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
zend_list_close(Z_RES_P(z_mh));
}
@@ -347,7 +369,7 @@ void _php_curl_multi_close(zend_resource *rsrc) /* {{{ */
pz_ch = (zval *)zend_llist_get_next_ex(&mh->easyh, &pos)) {
/* ptr is NULL means it already be freed */
if (Z_RES_P(pz_ch)->ptr) {
- ch = (php_curl *) zend_fetch_resource(pz_ch, -1, le_curl_name, NULL, 1, le_curl);
+ ch = (php_curl *) zend_fetch_resource(Z_RES_P(pz_ch), le_curl_name, le_curl);
_php_curl_verify_handlers(ch, 0);
}
}
@@ -424,7 +446,9 @@ PHP_FUNCTION(curl_multi_setopt)
return;
}
- ZEND_FETCH_RESOURCE(mh, php_curlm *, z_mh, -1, le_curl_multi_handle_name, le_curl_multi_handle);
+ if ((mh = (php_curlm *)zend_fetch_resource(Z_RES_P(z_mh), le_curl_multi_handle_name, le_curl_multi_handle)) == NULL) {
+ RETURN_FALSE;
+ }
if (!_php_curl_multi_setopt(mh, options, zvalue, return_value)) {
RETURN_TRUE;