@@ -1631,12 +1631,17 @@ static bool php_curl_set_callable_handler(zend_fcall_info_cache *const handler_f
1631
1631
}
1632
1632
1633
1633
1634
- #define HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (curl_ptr , constant_no_function , handler_type ) \
1634
+ #define HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (curl_ptr , constant_no_function , handler_type , default_method ) \
1635
1635
case constant_no_function##FUNCTION: { \
1636
1636
bool result = php_curl_set_callable_handler(&curl_ptr->handlers.handler_type->fcc, zvalue, is_array_config, #constant_no_function "FUNCTION"); \
1637
1637
if (!result) { \
1638
+ curl_ptr->handlers.handler_type->method = default_method; \
1638
1639
return FAILURE; \
1639
1640
} \
1641
+ if (!ZEND_FCC_INITIALIZED(curl_ptr->handlers.handler_type->fcc)) { \
1642
+ curl_ptr->handlers.handler_type->method = default_method; \
1643
+ return SUCCESS; \
1644
+ } \
1640
1645
curl_ptr->handlers.handler_type->method = PHP_CURL_USER; \
1641
1646
break; \
1642
1647
}
@@ -1659,9 +1664,9 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
1659
1664
1660
1665
switch (option ) {
1661
1666
/* Callable options */
1662
- HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_WRITE , write );
1663
- HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_HEADER , write_header );
1664
- HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_READ , read );
1667
+ HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_WRITE , write , PHP_CURL_STDOUT );
1668
+ HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_HEADER , write_header , PHP_CURL_IGNORE );
1669
+ HANDLE_CURL_OPTION_CALLABLE_PHP_CURL_USER (ch , CURLOPT_READ , read , PHP_CURL_DIRECT );
1665
1670
1666
1671
HANDLE_CURL_OPTION_CALLABLE (ch , CURLOPT_PROGRESS , handlers .progress , curl_progress );
1667
1672
HANDLE_CURL_OPTION_CALLABLE (ch , CURLOPT_XFERINFO , handlers .xferinfo , curl_xferinfo );
0 commit comments