sterling Fri Mar 12 13:38:00 2004 EDT
Modified files:
/php-src/ext/curl interface.c php_curl.h
Log:
add the curl_copy_handle() function which will exactly duplicate a cURL handle.
Useful when you have multiple "similair" transforms as with a multi handle with
only small variances (like the URL)
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.40&r2=1.41&ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.40 php-src/ext/curl/interface.c:1.41
--- php-src/ext/curl/interface.c:1.40 Fri Mar 12 12:37:04 2004
+++ php-src/ext/curl/interface.c Fri Mar 12 13:37:55 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interface.c,v 1.40 2004/03/12 17:37:04 iliaa Exp $ */
+/* $Id: interface.c,v 1.41 2004/03/12 18:37:55 sterling Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -59,6 +59,7 @@
*/
function_entry curl_functions[] = {
PHP_FE(curl_init, NULL)
+ PHP_FE(curl_copy_handle, NULL)
PHP_FE(curl_version, NULL)
PHP_FE(curl_setopt, NULL)
PHP_FE(curl_exec, NULL)
@@ -780,6 +781,40 @@
}
/* }}} */
+/* {{{ proto resource curl_copy_handle(resource ch)
+ Copy a cURL handle along with all of it's preferences */
+PHP_FUNCTION(curl_copy_handle)
+{
+ zval *zid;
+ CURL *cp;
+ php_curl *ch;
+ php_curl *dupch;
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &zid) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+
+ cp = curl_easy_duphandle(ch->cp);
+ if (!cp) {
+ php_error(E_WARNING, "Cannot duplicate cURL handle");
+ RETURN_FALSE;
+ }
+
+ alloc_curl_handle(&dupch);
+ TSRMLS_SET_CTX(ch->thread_ctx);
+
+ dupch->cp = cp;
+ dupch->handlers->write->method = ch->handlers->write->method;
+ dupch->handlers->write->type = ch->handlers->write->type;
+ dupch->handlers->read->method = ch->handlers->read->method;
+ dupch->handlers->write_header->method = ch->handlers->write_header->method;
+
+ ZEND_REGISTER_RESOURCE(return_value, dupch, le_curl);
+ dupch->id = Z_LVAL_P(return_value);
+}
+/* }}} */
+
/* {{{ proto bool curl_setopt(resource ch, string option, mixed value)
Set an option for a CURL transfer */
PHP_FUNCTION(curl_setopt)
http://cvs.php.net/diff.php/php-src/ext/curl/php_curl.h?r1=1.40&r2=1.41&ty=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.40 php-src/ext/curl/php_curl.h:1.41
--- php-src/ext/curl/php_curl.h:1.40 Wed Mar 10 19:11:18 2004
+++ php-src/ext/curl/php_curl.h Fri Mar 12 13:37:55 2004
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_curl.h,v 1.40 2004/03/11 00:11:18 iliaa Exp $ */
+/* $Id: php_curl.h,v 1.41 2004/03/12 18:37:55 sterling Exp $ */
#ifndef _PHP_CURL_H
#define _PHP_CURL_H
@@ -61,6 +61,7 @@
PHP_MINFO_FUNCTION(curl);
PHP_FUNCTION(curl_version);
PHP_FUNCTION(curl_init);
+PHP_FUNCTION(curl_copy_handle);
PHP_FUNCTION(curl_setopt);
PHP_FUNCTION(curl_exec);
PHP_FUNCTION(curl_getinfo);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php