X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http.c;h=d766e42cf32f667588e5a0cd5d9368881e71f6dd;hp=6a28a5e4fd89690e9befe4c17bdb1f3cfc211378;hb=2214902cf967c3aaf8e8493295f1ac43831ed015;hpb=ae1297f5908f5683e7384395e5ae0e5a295be576 diff --git a/http.c b/http.c index 6a28a5e..d766e42 100644 --- a/http.c +++ b/http.c @@ -68,9 +68,19 @@ ZEND_BEGIN_ARG_INFO(http_request_info_ref_4, 0) ZEND_ARG_PASS_INFO(0) ZEND_ARG_PASS_INFO(1) ZEND_END_ARG_INFO(); + +static +ZEND_BEGIN_ARG_INFO(http_request_info_ref_5, 0) + ZEND_ARG_PASS_INFO(0) + ZEND_ARG_PASS_INFO(0) + ZEND_ARG_PASS_INFO(0) + ZEND_ARG_PASS_INFO(0) + ZEND_ARG_PASS_INFO(1) +ZEND_END_ARG_INFO(); #else static unsigned char http_request_info_ref_3[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; static unsigned char http_request_info_ref_4[] = {4, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; +static unsigned char http_request_info_ref_5[] = {5, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_NONE, BYREF_FORCE}; #endif /* ZEND_ENGINE_2 */ #endif /* HTTP_HAVE_CURL */ @@ -107,7 +117,7 @@ function_entry http_functions[] = { PHP_FE(http_get, http_request_info_ref_3) PHP_FE(http_head, http_request_info_ref_3) PHP_FE(http_post_data, http_request_info_ref_4) - PHP_FE(http_post_array, http_request_info_ref_4) + PHP_FE(http_post_fields, http_request_info_ref_5) #endif PHP_FE(http_auth_basic, NULL) PHP_FE(http_auth_basic_cb, NULL) @@ -179,7 +189,7 @@ static inline void _http_globals_dtor(TSRMLS_D) efree(HTTP_G(ctype)); HTTP_G(ctype) = NULL; } - + #ifdef HTTP_HAVE_CURL # if LIBCURL_VERSION_NUM < 0x070c00 memset(&HTTP_G(curlerr), 0, sizeof(HTTP_G(curlerr))); @@ -193,21 +203,13 @@ static inline void _http_globals_dtor(TSRMLS_D) #define http_check_allowed_methods(m, l) _http_check_allowed_methods((m), (l) TSRMLS_CC) static inline void _http_check_allowed_methods(char *methods, int length TSRMLS_DC) { - char *found, *header; - - if (!length || !SG(request_info).request_method) { - return; + if (length && SG(request_info).request_method) { + if (SUCCESS != http_check_method_ex(SG(request_info).request_method, methods)) { + char *header = emalloc(length + sizeof("Allow: ")); + sprintf(header, "Allow: %s", methods); + http_exit(405, header); + } } - - if ( (found = strstr(methods, SG(request_info).request_method)) && - (found == SG(request_info).request_method || !isalpha(found[-1])) && - (!isalpha(found[strlen(SG(request_info).request_method) + 1]))) { - return; - } - - header = emalloc(length + sizeof("Allow: ")); - sprintf(header, "Allow: %s", methods); - http_exit(405, header); } /* }}} */