[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2009-05-28 Thread Jani Taskinen
janiThu May 28 09:09:03 2009 UTC

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  - Fix build for winblows
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.167r2=1.168diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.167 php-src/ext/curl/interface.c:1.168
--- php-src/ext/curl/interface.c:1.167  Tue May 26 15:48:28 2009
+++ php-src/ext/curl/interface.cThu May 28 09:09:02 2009
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.167 2009/05/26 15:48:28 jani Exp $ */
+/* $Id: interface.c,v 1.168 2009/05/28 09:09:02 jani Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -1691,11 +1691,11 @@
break;
case CURLOPT_STDERR:
if (((php_stream *) what)-mode[0] != 
'r') {
-   if (ch-handlers-stderr) {
-   
zval_ptr_dtor(ch-handlers-stderr);
+   if (ch-handlers-std_err) {
+   
zval_ptr_dtor(ch-handlers-std_err);
}
zval_add_ref(zvalue);
-   ch-handlers-stderr = *zvalue;
+   ch-handlers-std_err = *zvalue;

zend_list_addref(Z_LVAL_PP(zvalue));
} else {
php_error_docref(NULL 
TSRMLS_CC, E_WARNING, the provided file handle is not writable);
@@ -2349,8 +2349,8 @@
 #endif
 
/* Prevent crash inside cURL if passed file has already been closed */
-   if (ch-handlers-stderr  Z_REFCOUNT_P(ch-handlers-stderr) = 0) {
-   curl_easy_setopt(ch-cp, CURLOPT_STDERR, stderr);
+   if (ch-handlers-std_err  Z_REFCOUNT_P(ch-handlers-std_err) = 0) {
+   curl_easy_setopt(ch-cp, CURLOPT_STDERR, std_err);
}
 
curl_easy_cleanup(ch-cp);
@@ -2378,8 +2378,8 @@
if (ch-handlers-passwd) {
zval_ptr_dtor(ch-handlers-passwd);
}
-   if (ch-handlers-stderr) {
-   zval_ptr_dtor(ch-handlers-stderr);
+   if (ch-handlers-std_err) {
+   zval_ptr_dtor(ch-handlers-std_err);
}
if (ch-header.str_len  0) {
efree(ch-header.str);
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/php_curl.h?r1=1.54r2=1.55diff_format=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.54 php-src/ext/curl/php_curl.h:1.55
--- php-src/ext/curl/php_curl.h:1.54Tue May 26 15:48:28 2009
+++ php-src/ext/curl/php_curl.h Thu May 28 09:09:02 2009
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: php_curl.h,v 1.54 2009/05/26 15:48:28 jani Exp $ */
+/* $Id: php_curl.h,v 1.55 2009/05/28 09:09:02 jani Exp $ */
 
 #ifndef _PHP_CURL_H
 #define _PHP_CURL_H
@@ -107,7 +107,7 @@
php_curl_write *write_header;
php_curl_read  *read;
zval   *passwd;
-   zval   *stderr;
+   zval   *std_err;
php_curl_progress *progress;
 } php_curl_handlers;
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2009-05-26 Thread Jani Taskinen
janiTue May 26 15:48:28 2009 UTC

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  - Fixed bug #48203 (crash when CURLOPT_STDERR is set to regular file)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.166r2=1.167diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.166 php-src/ext/curl/interface.c:1.167
--- php-src/ext/curl/interface.c:1.166  Thu May 21 12:52:59 2009
+++ php-src/ext/curl/interface.cTue May 26 15:48:28 2009
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.166 2009/05/21 12:52:59 iliaa Exp $ */
+/* $Id: interface.c,v 1.167 2009/05/26 15:48:28 jani Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -459,7 +459,7 @@
le_curl_multi_handle = 
zend_register_list_destructors_ex(_php_curl_multi_close, NULL, curl, 
module_number);
 
/* See http://curl.haxx.se/lxr/source/docs/libcurl/symbols-in-versions
-  or curl src/docs/libcurl/symbols-in-versions for a (almost) complete 
list 
+  or curl src/docs/libcurl/symbols-in-versions for a (almost) complete 
list
   of options and which version they were introduced */
 
/* Constants for curl_setopt() */
@@ -1689,6 +1689,20 @@
ch-handlers-read-fp = fp;
ch-handlers-read-fd = 
Z_LVAL_PP(zvalue);
break;
+   case CURLOPT_STDERR:
+   if (((php_stream *) what)-mode[0] != 
'r') {
+   if (ch-handlers-stderr) {
+   
zval_ptr_dtor(ch-handlers-stderr);
+   }
+   zval_add_ref(zvalue);
+   ch-handlers-stderr = *zvalue;
+   
zend_list_addref(Z_LVAL_PP(zvalue));
+   } else {
+   php_error_docref(NULL 
TSRMLS_CC, E_WARNING, the provided file handle is not writable);
+   RETVAL_FALSE;
+   return 1;
+   }
+   /* break omitted intentionally */
default:
error = curl_easy_setopt(ch-cp, 
option, fp);
break;
@@ -2334,6 +2348,11 @@
fprintf(stderr, DTOR CALLED, ch = %x\n, ch);
 #endif
 
+   /* Prevent crash inside cURL if passed file has already been closed */
+   if (ch-handlers-stderr  Z_REFCOUNT_P(ch-handlers-stderr) = 0) {
+   curl_easy_setopt(ch-cp, CURLOPT_STDERR, stderr);
+   }
+
curl_easy_cleanup(ch-cp);
 #if LIBCURL_VERSION_NUM  0x071101
zend_llist_clean(ch-to_free.str);
@@ -2353,12 +2372,15 @@
if (ch-handlers-write_header-func_name) {
zval_ptr_dtor(ch-handlers-write_header-func_name);
}
-   if(ch-handlers-progress-func_name) {
+   if (ch-handlers-progress-func_name) {
zval_ptr_dtor(ch-handlers-progress-func_name);
}
if (ch-handlers-passwd) {
zval_ptr_dtor(ch-handlers-passwd);
}
+   if (ch-handlers-stderr) {
+   zval_ptr_dtor(ch-handlers-stderr);
+   }
if (ch-header.str_len  0) {
efree(ch-header.str);
}
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/php_curl.h?r1=1.53r2=1.54diff_format=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.53 php-src/ext/curl/php_curl.h:1.54
--- php-src/ext/curl/php_curl.h:1.53Sun May  3 14:58:06 2009
+++ php-src/ext/curl/php_curl.h Tue May 26 15:48:28 2009
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: php_curl.h,v 1.53 2009/05/03 14:58:06 pajoye Exp $ */
+/* $Id: php_curl.h,v 1.54 2009/05/26 15:48:28 jani Exp $ */
 
 #ifndef _PHP_CURL_H
 #define _PHP_CURL_H
@@ -107,6 +107,7 @@
php_curl_write *write_header;
php_curl_read  *read;
zval   *passwd;
+   zval   *stderr;
php_curl_progress *progress;
 } php_curl_handlers;
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2009-05-03 Thread Pierre-Alain Joye
pajoye  Sun May  3 14:58:06 2009 UTC

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  - [DOC] #41712, implement  progress callback
- add constants CURLOPT_NOPROGRESS and CURLOPT_PROGRESSFUNCTION
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.149r2=1.150diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.149 php-src/ext/curl/interface.c:1.150
--- php-src/ext/curl/interface.c:1.149  Mon Mar 16 15:05:21 2009
+++ php-src/ext/curl/interface.cSun May  3 14:58:06 2009
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.149 2009/03/16 15:05:21 felipe Exp $ */
+/* $Id: interface.c,v 1.150 2009/05/03 14:58:06 pajoye Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -456,6 +456,7 @@
REGISTER_CURL_CONSTANT(CURLOPT_HEADER);
REGISTER_CURL_CONSTANT(CURLOPT_HTTPHEADER);
REGISTER_CURL_CONSTANT(CURLOPT_NOPROGRESS);
+   REGISTER_CURL_CONSTANT(CURLOPT_PROGRESSFUNCTION);
REGISTER_CURL_CONSTANT(CURLOPT_NOBODY);
REGISTER_CURL_CONSTANT(CURLOPT_FAILONERROR);
REGISTER_CURL_CONSTANT(CURLOPT_UPLOAD);
@@ -902,6 +903,87 @@
 }
 /* }}} */
 
+/* {{{ curl_progress
+ */
+static size_t curl_progress(void *clientp,
+double dltotal,
+double dlnow,
+double ultotal,
+double ulnow)
+{
+   php_curl   *ch = (php_curl *) clientp;
+   php_curl_progress  *t  = ch-handlers-progress;
+   int length = -1;
+   size_t  rval = 0;
+
+#if PHP_CURL_DEBUG
+   fprintf(stderr, curl_progress() called\n);
+   fprintf(stderr, clientp = %x, dltotal = %f, dlnow = %f, ultotal = %f, 
ulnow = %f\n, clientp, dltotal, dlnow, ultotal, ulnow);
+#endif
+
+   switch (t-method) {
+   case PHP_CURL_USER: {
+   zval **argv[4];
+   zval  *zdltotal = NULL;
+   zval  *zdlnow = NULL;
+   zval  *zultotal = NULL;
+   zval  *zulnow = NULL;
+   zval  *retval_ptr;
+   int   error;
+   zend_fcall_info fci;
+   TSRMLS_FETCH_FROM_CTX(ch-thread_ctx);
+
+   MAKE_STD_ZVAL(zdltotal);
+   MAKE_STD_ZVAL(zdlnow);
+   MAKE_STD_ZVAL(zultotal);
+   MAKE_STD_ZVAL(zulnow);
+   
+   ZVAL_LONG(zdltotal, dltotal);
+   ZVAL_LONG(zdlnow, dlnow);
+   ZVAL_LONG(zultotal, ultotal);
+   ZVAL_LONG(zulnow, ulnow);
+
+   argv[0] = zdltotal;
+   argv[1] = zdlnow;
+   argv[2] = zultotal;
+   argv[3] = zulnow;
+
+   fci.size = sizeof(fci);
+   fci.function_table = EG(function_table);
+   fci.function_name = t-func_name;
+   fci.object_ptr = NULL;
+   fci.retval_ptr_ptr = retval_ptr;
+   fci.param_count = 4;
+   fci.params = argv;
+   fci.no_separation = 0;
+   fci.symbol_table = NULL;
+
+   ch-in_callback = 1;
+   error = zend_call_function(fci, t-fci_cache 
TSRMLS_CC);
+   ch-in_callback = 0;
+   if (error == FAILURE) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, 
Cannot call the CURLOPT_READFUNCTION); 
+   length = -1;
+   } else if (retval_ptr) {
+   if (Z_TYPE_P(retval_ptr) != IS_LONG) {
+   convert_to_long_ex(retval_ptr);
+   }
+   if(0 != Z_LVAL_P(retval_ptr))
+   rval = 1;
+   zval_ptr_dtor(retval_ptr);
+   }
+   zval_ptr_dtor(argv[0]);
+   zval_ptr_dtor(argv[1]);
+   zval_ptr_dtor(argv[2]);
+   zval_ptr_dtor(argv[3]);
+   break;
+   }
+   }
+   return rval;
+}
+/* }}} */
+
+
 /* {{{ curl_read
  */
 static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
@@ -1199,6 +1281,7 @@
(*ch)-handlers-write= ecalloc(1, sizeof(php_curl_write));
(*ch)-handlers-write_header = ecalloc(1, sizeof(php_curl_write));
(*ch)-handlers-read = ecalloc(1, sizeof(php_curl_read));
+   (*ch)-handlers-progress = ecalloc(1, sizeof(php_curl_progress));
 
(*ch)-in_callback = 0;

[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2008-12-17 Thread Jani Taskinen
janiWed Dec 17 14:13:25 2008 UTC

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  - Fixed bug #45161 (Reusing a curl handle leaks memory)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.138r2=1.139diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.138 php-src/ext/curl/interface.c:1.139
--- php-src/ext/curl/interface.c:1.138  Tue Dec  9 17:17:49 2008
+++ php-src/ext/curl/interface.cWed Dec 17 14:13:25 2008
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.138 2008/12/09 17:17:49 iliaa Exp $ */
+/* $Id: interface.c,v 1.139 2008/12/17 14:13:25 jani Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -323,7 +323,6 @@
char str[1024];
size_t n = 0;
 
-
d = curl_version_info(CURLVERSION_NOW);
php_info_print_table_start();
php_info_print_table_row(2, cURL support,enabled);
@@ -331,7 +330,6 @@
sprintf(str, %d, d-age);
php_info_print_table_row(2, Age, str);
 
-
 #ifdef CURL_VERSION_IPV6
if (d-features  CURL_VERSION_IPV6) {
n = sprintf(str, %s, IPv6-enabled, );
@@ -1102,6 +1100,7 @@
 /* }}} */
 #endif
 
+#if LIBCURL_VERSION_NUM  0x071101
 /* {{{ curl_free_string
  */
 static void curl_free_string(void **string)
@@ -1109,6 +1108,7 @@
efree(*string);
 }  
 /* }}} */
+#endif
 
 /* {{{ curl_free_post
  */
@@ -1184,7 +1184,9 @@

memset((*ch)-err, 0, sizeof((*ch)-err));

+#if LIBCURL_VERSION_NUM  0x071101
zend_llist_init((*ch)-to_free.str,   sizeof(char *),
(llist_dtor_func_t) curl_free_string, 0);
+#endif
zend_llist_init((*ch)-to_free.slist, sizeof(struct curl_slist), 
(llist_dtor_func_t) curl_free_slist,  0);
zend_llist_init((*ch)-to_free.post,  sizeof(struct HttpPost),   
(llist_dtor_func_t) curl_free_post,   0);
 }
@@ -1196,17 +1198,17 @@
 {
php_curl*ch;
CURL*cp;
-   zstrsrc = NULL_ZSTR;
-   int src_len = 0;
-   zend_uchar  src_type = 0;
+   zstrurl = NULL_ZSTR;
+   int url_len = 0;
+   zend_uchar  url_type = 0;
 
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |t, src, 
src_len, src_type) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, |t, url, 
url_len, url_type) == FAILURE) {
RETURN_FALSE;
}
 
-   if (src.v  src_type == IS_UNICODE) {
-   src.s = zend_unicode_to_ascii((UChar*)src.u, src_len TSRMLS_CC);
-   if (!src.s) {
+   if (url.v  url_type == IS_UNICODE) {
+   url.s = zend_unicode_to_ascii((UChar*)url.u, url_len TSRMLS_CC);
+   if (!url.s) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, Binary or 
ASCII-Unicode string expected, non-ASCII-Unicode string received); 
RETURN_FALSE;
}
@@ -1246,12 +1248,16 @@
curl_easy_setopt(ch-cp, CURLOPT_NOSIGNAL, 1);
 #endif
 
-   if (src.v) {
+   if (url.v) {
+#if LIBCURL_VERSION_NUM = 0x071100
+   curl_easy_setopt(ch-cp, CURLOPT_URL, url.s);
+#else
char *urlcopy;
 
-   urlcopy = estrndup(src.s, src_len);
+   urlcopy = estrndup(url.s, url_len);
curl_easy_setopt(ch-cp, CURLOPT_URL, urlcopy);
zend_llist_add_element(ch-to_free.str, urlcopy);
+#endif
}
 
ZEND_REGISTER_RESOURCE(return_value, ch, le_curl);
@@ -1318,9 +1324,11 @@
curl_easy_setopt(dupch-cp, CURLOPT_INFILE,(void *) dupch);
curl_easy_setopt(dupch-cp, CURLOPT_WRITEHEADER,   (void *) dupch);
 
+#if LIBCURL_VERSION_NUM  0x071101
zend_llist_copy(dupch-to_free.str, ch-to_free.str);
/* Don't try to free copied strings, they're free'd when the original 
handle is destroyed */
dupch-to_free.str.dtor = NULL;
+#endif
zend_llist_copy(dupch-to_free.slist, ch-to_free.slist);
zend_llist_copy(dupch-to_free.post, ch-to_free.post);
 
@@ -1443,7 +1451,9 @@
case CURLOPT_SSLENGINE_DEFAULT:
case CURLOPT_SSLCERTTYPE:
case CURLOPT_ENCODING: {
+#if LIBCURL_VERSION_NUM  0x071100
char *copystr = NULL;
+#endif

convert_to_string_ex(zvalue);
 
@@ -1451,9 +1461,14 @@

PHP_CURL_CHECK_OPEN_BASEDIR(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue), 1);
}
 
+#if LIBCURL_VERSION_NUM = 0x071100
+   /* Strings passed to libcurl as ’char *’ arguments, 
are copied by the library... NOTE: before 7.17.0 strings were not copied. */
+   error = curl_easy_setopt(ch-cp, option, 
Z_STRVAL_PP(zvalue));
+#else
copystr = 

[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2005-08-09 Thread Ilia Alshanetsky
iliaa   Tue Aug  9 10:15:01 2005 EDT

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  Added curl_setopt_array(), allowing setting of multiple cURL options.
  Added CURLINFO_HEADER_OUT to facilitate request retrieval.
  
  
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.62r2=1.63ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.62 php-src/ext/curl/interface.c:1.63
--- php-src/ext/curl/interface.c:1.62   Wed Aug  3 10:06:44 2005
+++ php-src/ext/curl/interface.cTue Aug  9 10:14:55 2005
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.62 2005/08/03 14:06:44 sniper Exp $ */
+/* $Id: interface.c,v 1.63 2005/08/09 14:14:55 iliaa Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -91,6 +91,7 @@
PHP_FE(curl_copy_handle, NULL)
PHP_FE(curl_version, NULL)
PHP_FE(curl_setopt,  NULL)
+   PHP_FE(curl_setopt_array,NULL)
PHP_FE(curl_exec,NULL)
PHP_FE(curl_getinfo, NULL)
PHP_FE(curl_error,   NULL)
@@ -293,6 +294,7 @@
REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_TYPE);
REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_TIME);
REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_COUNT);
+   REGISTER_CURL_CONSTANT(CURLINFO_HEADER_OUT);
 
/* cURL protocol constants (curl_version) */
REGISTER_CURL_CONSTANT(CURL_VERSION_IPV6);
@@ -670,6 +672,23 @@
 }
 /* }}} */
 
+static int curl_debug(CURL *cp, curl_infotype type, char *buf, size_t buf_len, 
void *ctx)
+{
+   php_curl*ch   = (php_curl *) ctx;
+
+   if (type == CURLINFO_HEADER_OUT) {
+   if (ch-header.str_len) {
+   efree(ch-header.str);  
+   }
+   if (buf_len  0) {
+   ch-header.str = estrndup(buf, buf_len);
+   ch-header.str_len = buf_len;
+   }
+   }
+
+   return 0;
+}
+
 #if CURLOPT_PASSWDFUNCTION != 0
 /* {{{ curl_passwd
  */
@@ -792,6 +811,7 @@
(*ch)-handlers-read = ecalloc(1, sizeof(php_curl_read));
 
(*ch)-in_callback = 0;
+   (*ch)-header.str_len = 0;

memset((*ch)-err, 0, sizeof((*ch)-err));

@@ -900,24 +920,10 @@
 }
 /* }}} */
 
-/* {{{ proto bool curl_setopt(resource ch, int option, mixed value)
-   Set an option for a CURL transfer */
-PHP_FUNCTION(curl_setopt)
+static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval 
*return_value TSRMLS_DC)
 {
-   zval   **zid, **zoption, **zvalue;
-   php_curl*ch;
CURLcode error=CURLE_OK;
-   int  option;
 
-   if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, zid, zoption, 
zvalue) == FAILURE) {
-   WRONG_PARAM_COUNT;
-   }
-
-   ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
-
-   convert_to_long_ex(zoption);
-
-   option = Z_LVAL_PP(zoption);
switch (option) {
case CURLOPT_INFILESIZE:
case CURLOPT_VERBOSE:
@@ -1240,17 +1246,83 @@
 
break;
}
+   case CURLINFO_HEADER_OUT:
+   convert_to_long_ex(zvalue);
+   if (Z_LVAL_PP(zvalue) == 1) {
+   curl_easy_setopt(ch-cp, CURLOPT_DEBUGFUNCTION, 
curl_debug);
+   curl_easy_setopt(ch-cp, CURLOPT_DEBUGDATA, 
(void *)ch);
+   curl_easy_setopt(ch-cp, CURLOPT_VERBOSE, 1);
+   } else {
+   curl_easy_setopt(ch-cp, CURLOPT_DEBUGFUNCTION, 
NULL);
+   curl_easy_setopt(ch-cp, CURLOPT_DEBUGDATA, 
NULL);
+   curl_easy_setopt(ch-cp, CURLOPT_VERBOSE, 0);
+   }
+   break;
}
 
SAVE_CURL_ERROR(ch, error);
if (error != CURLE_OK) {
-   RETURN_FALSE;
+   return 1;
} else {
+   return 0;
+   }
+}
+
+/* {{{ proto bool curl_setopt(resource ch, int option, mixed value)
+   Set an option for a CURL transfer */
+PHP_FUNCTION(curl_setopt)
+{
+   zval   **zid, **zoption, **zvalue;
+   php_curl*ch;
+
+   if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, zid, zoption, 
zvalue) == FAILURE) {
+   WRONG_PARAM_COUNT;
+   }
+
+   ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+
+   convert_to_long_ex(zoption);
+
+   if (!_php_curl_setopt(ch, Z_LVAL_PP(zoption), zvalue, return_value 
TSRMLS_CC)) {
RETURN_TRUE;
+   } else {
+   RETURN_FALSE;
}
 }
 /* }}} */
 
+/* {{{ proto bool curl_setopt_array(resource ch, array options)
+   Set an array of option 

[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2005-07-15 Thread George Schlossnagle
gschlossnagle   Fri Jul 15 12:47:48 2005 EDT

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  Darwin seems to like this much better.
  
  
  
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.58r2=1.59ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.58 php-src/ext/curl/interface.c:1.59
--- php-src/ext/curl/interface.c:1.58   Sun Jun 26 13:31:07 2005
+++ php-src/ext/curl/interface.cFri Jul 15 12:47:48 2005
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.58 2005/06/26 17:31:07 iliaa Exp $ */
+/* $Id: interface.c,v 1.59 2005/07/15 16:47:48 gschlossnagle Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -52,6 +52,9 @@
 #include ext/standard/url.h
 #include php_curl.h
 
+int  le_curl;
+int  le_curl_multi_handle;
+
 static void _php_curl_close(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 
 #define SAVE_CURL_ERROR(__handle, __err) (__handle)-err.no = (int) __err;
http://cvs.php.net/diff.php/php-src/ext/curl/php_curl.h?r1=1.42r2=1.43ty=u
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.42 php-src/ext/curl/php_curl.h:1.43
--- php-src/ext/curl/php_curl.h:1.42Thu Jun  2 17:04:12 2005
+++ php-src/ext/curl/php_curl.h Fri Jul 15 12:47:48 2005
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: php_curl.h,v 1.42 2005/06/02 21:04:12 tony2001 Exp $ */
+/* $Id: php_curl.h,v 1.43 2005/07/15 16:47:48 gschlossnagle Exp $ */
 
 #ifndef _PHP_CURL_H
 #define _PHP_CURL_H
@@ -51,9 +51,9 @@
 #define PHP_CURL_BINARY 6
 #define PHP_CURL_IGNORE 7
 
-int  le_curl;
+extern int  le_curl;
 #define le_curl_name cURL handle
-int  le_curl_multi_handle;
+extern int  le_curl_multi_handle;
 #define le_curl_multi_handle_name cURL Multi Handle
 
 PHP_MINIT_FUNCTION(curl);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2005-06-02 Thread Antony Dovgal
tony2001Thu Jun  2 17:04:12 2005 EDT

  Modified files:  
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  fix bug #33222 (segfault when CURL handle is closed in a callback).
  fix segfaults when CURL callback functions throw exception.
  
  
http://cvs.php.net/diff.php/php-src/ext/curl/interface.c?r1=1.56r2=1.57ty=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.56 php-src/ext/curl/interface.c:1.57
--- php-src/ext/curl/interface.c:1.56   Thu Apr 21 17:11:21 2005
+++ php-src/ext/curl/interface.cThu Jun  2 17:04:12 2005
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.56 2005/04/21 21:11:21 iliaa Exp $ */
+/* $Id: interface.c,v 1.57 2005/06/02 21:04:12 tony2001 Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -490,20 +490,22 @@
fci.no_separation = 0;
fci.symbol_table = NULL;
 
+   ch-in_callback = 1;
error = zend_call_function(fci, t-fci_cache 
TSRMLS_CC);
+   ch-in_callback = 0;
if (error == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, 
Could not call the CURLOPT_WRITEFUNCTION);
length = -1;
-   } else {
+   } else if (retval_ptr) {
if (Z_TYPE_P(retval_ptr) != IS_LONG) {
convert_to_long_ex(retval_ptr);
}
length = Z_LVAL_P(retval_ptr);
+   zval_ptr_dtor(retval_ptr);
}
 
zval_ptr_dtor(argv[0]);
zval_ptr_dtor(argv[1]);
-   zval_ptr_dtor(retval_ptr);
break;
}
}
@@ -560,20 +562,23 @@
fci.no_separation = 0;
fci.symbol_table = NULL;
 
+   ch-in_callback = 1;
error = zend_call_function(fci, t-fci_cache 
TSRMLS_CC);
+   ch-in_callback = 0;
if (error == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, 
Cannot call the CURLOPT_READFUNCTION); 
-   } else {
+   length = -1;
+   } else if (retval_ptr) {
if (Z_TYPE_P(retval_ptr) == IS_STRING) {
length = MIN(size * nmemb, 
Z_STRLEN_P(retval_ptr));
memcpy(data, Z_STRVAL_P(retval_ptr), 
length);
}
+   zval_ptr_dtor(retval_ptr);
}
 
zval_ptr_dtor(argv[0]);
zval_ptr_dtor(argv[1]);
zval_ptr_dtor(argv[2]);
-   zval_ptr_dtor(retval_ptr);
break;
}
}
@@ -631,19 +636,21 @@
fci.params = argv;
fci.no_separation = 0;
 
+   ch-in_callback = 1;
error = zend_call_function(fci, t-fci_cache 
TSRMLS_CC);
+   ch-in_callback = 0;
if (error == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, 
Could not call the CURLOPT_HEADERFUNCTION);
length = -1;
-   } else {
+   } else if (retval_ptr) {
if (Z_TYPE_P(retval_ptr) != IS_LONG) {
convert_to_long_ex(retval_ptr);
}
length = Z_LVAL_P(retval_ptr);
+   zval_ptr_dtor(retval_ptr);
}
zval_ptr_dtor(argv[0]);
zval_ptr_dtor(argv[1]);
-   zval_ptr_dtor(retval_ptr);
break;
}
 
@@ -779,6 +786,8 @@
(*ch)-handlers-write_header = ecalloc(1, sizeof(php_curl_write));
(*ch)-handlers-read = ecalloc(1, sizeof(php_curl_read));
 
+   (*ch)-in_callback = 0;
+   
memset((*ch)-err, 0, sizeof((*ch)-err));

zend_llist_init((*ch)-to_free.str,   sizeof(char *),
(void(*)(void *)) curl_free_string, 0);
@@ -1478,6 +1487,12 @@
}
 
ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
+
+   if (ch-in_callback) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, Attempt to close 
CURL handle from a callback);
+   return;
+   }
+   
if 

[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h

2004-03-12 Thread Sterling Hughes
sterlingFri 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.40r2=1.41ty=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.cFri 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.40r2=1.41ty=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.40Wed 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



[PHP-CVS] cvs: php-src /ext/curl interface.c php_curl.h ZendEngine2 zend_execute_API.c

2003-08-14 Thread Jani Taskinen
sniper  Tue Aug  5 19:50:59 2003 EDT

  Modified files:  
/ZendEngine2zend_execute_API.c 
/php-src/ext/curl   interface.c php_curl.h 
  Log:
  Fix the build
  
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.227 ZendEngine2/zend_execute_API.c:1.228
--- ZendEngine2/zend_execute_API.c:1.227Tue Aug  5 06:24:40 2003
+++ ZendEngine2/zend_execute_API.c  Tue Aug  5 19:50:59 2003
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: zend_execute_API.c,v 1.227 2003/08/05 10:24:40 zeev Exp $ */
+/* $Id: zend_execute_API.c,v 1.228 2003/08/05 23:50:59 sniper Exp $ */
 
 #include stdio.h
 #include signal.h
@@ -33,14 +33,14 @@
 #include sys/time.h
 #endif
 
-
 ZEND_API void (*zend_execute)(zend_op_array *op_array TSRMLS_DC);
 ZEND_API void (*zend_execute_internal)(zend_execute_data *execute_data_ptr, int 
return_value_used TSRMLS_DC);
 
-#ifdef ZEND_WIN32
-#include process.h
 /* true global */
 ZEND_API zend_fcall_info_cache empty_fcall_info_cache = { NULL, NULL, NULL, 0 };
+
+#ifdef ZEND_WIN32
+#include process.h
 
 static WNDCLASS wc;
 static HWND timeout_window;
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.26 php-src/ext/curl/interface.c:1.27
--- php-src/ext/curl/interface.c:1.26   Tue Aug  5 06:29:02 2003
+++ php-src/ext/curl/interface.cTue Aug  5 19:50:59 2003
@@ -16,7 +16,7 @@
+--+
 */
 
-/* $Id: interface.c,v 1.26 2003/08/05 10:29:02 zeev Exp $ */
+/* $Id: interface.c,v 1.27 2003/08/05 23:50:59 sniper Exp $ */
 
 #define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
 
@@ -562,7 +562,7 @@
fci.params = argv;
fci.no_separation = 0;
 
-   error = zend_call_user_function(fci, t-fci_cache TSRMLS_CC);
+   error = zend_call_function(fci, t-fci_cache TSRMLS_CC);
if (error == FAILURE) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, Could not 
call the CURLOPT_HEADERFUNCTION);
length = -1;
Index: php-src/ext/curl/php_curl.h
diff -u php-src/ext/curl/php_curl.h:1.37 php-src/ext/curl/php_curl.h:1.38
--- php-src/ext/curl/php_curl.h:1.37Tue Aug  5 06:29:03 2003
+++ php-src/ext/curl/php_curl.h Tue Aug  5 19:50:59 2003
@@ -17,7 +17,7 @@
+--+
 */
 
-/* $Id: php_curl.h,v 1.37 2003/08/05 10:29:03 zeev Exp $ */
+/* $Id: php_curl.h,v 1.38 2003/08/05 23:50:59 sniper Exp $ */
 
 #ifndef _PHP_CURL_H
 #define _PHP_CURL_H
@@ -79,7 +79,7 @@
 
 typedef struct {
zval*func_name;
-   zend_fcall_info fci_cache;
+   zend_fcall_info_cache fci_cache;
FILE*fp;
smart_str   buf;
int method;
@@ -88,7 +88,7 @@
 
 typedef struct {
zval*func_name;
-   zend_fcall_info fci_cache;
+   zend_fcall_info_cache fci_cache;
FILE*fp;
longfd;
int method;



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php