@@ -1631,12 +1631,17 @@ static bool php_curl_set_callable_handler(zend_fcall_info_cache *const handler_f
16311631}
16321632
16331633
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 ) \
16351635 case constant_no_function##FUNCTION: { \
16361636 bool result = php_curl_set_callable_handler(&curl_ptr->handlers.handler_type->fcc, zvalue, is_array_config, #constant_no_function "FUNCTION"); \
16371637 if (!result) { \
1638+ curl_ptr->handlers.handler_type->method = default_method; \
16381639 return FAILURE; \
16391640 } \
1641+ if (!ZEND_FCC_INITIALIZED(curl_ptr->handlers.handler_type->fcc)) { \
1642+ curl_ptr->handlers.handler_type->method = default_method; \
1643+ return SUCCESS; \
1644+ } \
16401645 curl_ptr->handlers.handler_type->method = PHP_CURL_USER; \
16411646 break; \
16421647 }
@@ -1659,9 +1664,9 @@ static zend_result _php_curl_setopt(php_curl *ch, zend_long option, zval *zvalue
16591664
16601665 switch (option ) {
16611666 /* 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 );
16651670
16661671 HANDLE_CURL_OPTION_CALLABLE (ch , CURLOPT_PROGRESS , handlers .progress , curl_progress );
16671672 HANDLE_CURL_OPTION_CALLABLE (ch , CURLOPT_XFERINFO , handlers .xferinfo , curl_xferinfo );
0 commit comments