X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_api.c;h=07cb9f4dbced71aadc65962c5735266befb3c248;hp=0bb6cf22a9b6ae65a7f089cf902f64a406d2d44d;hb=7b88d9022c90eb12e5fe195af8644935141c9d68;hpb=edc84b40eb2c5be04492fa98fec5833a030782eb diff --git a/http_api.c b/http_api.c index 0bb6cf2..07cb9f4 100644 --- a/http_api.c +++ b/http_api.c @@ -21,7 +21,6 @@ #include "SAPI.h" #include "php_output.h" #include "ext/standard/url.h" -#include "ext/standard/head.h" #include "php_http_api.h" #include "php_http_send_api.h" @@ -30,8 +29,6 @@ # include "php_http_exception_object.h" #endif -ZEND_EXTERN_MODULE_GLOBALS(http); - PHP_MINIT_FUNCTION(http_support) { HTTP_LONG_CONSTANT("HTTP_SUPPORT", HTTP_SUPPORT); @@ -56,7 +53,7 @@ PHP_HTTP_API long _http_support(long feature) #ifdef HTTP_HAVE_MAGIC support |= HTTP_SUPPORT_MAGICMIME; #endif -#if defined(HTTP_HAVE_ZLIB) || defined(HAVE_ZLIB) +#ifdef HTTP_HAVE_ZLIB support |= HTTP_SUPPORT_ENCODINGS; #endif @@ -211,6 +208,8 @@ void _http_log_ex(char *file, const char *ident, const char *message TSRMLS_DC) struct tm nowtm; char datetime[128]; + HTTP_CHECK_OPEN_BASEDIR(file, return); + time(&now); strftime(datetime, sizeof(datetime), "%Y-%m-%d %H:%M:%S", php_localtime_r(&now, &nowtm)); @@ -248,7 +247,7 @@ STATUS _http_exit_ex(int status, char *header, char *body, zend_bool send_header } php_end_ob_buffers(0 TSRMLS_CC); - if (php_header(TSRMLS_C) && body) { + if ((SUCCESS == sapi_send_headers(TSRMLS_C)) && body) { PHPWRITE(body, strlen(body)); } @@ -283,7 +282,7 @@ STATUS _http_check_method_ex(const char *method, const char *methods) if ( (found = strstr(methods, method)) && (found == method || !isalpha(found[-1])) && - (!isalpha(found[strlen(method) + 1]))) { + (strlen(found) >= strlen(method) && !isalpha(found[strlen(method)]))) { return SUCCESS; } return FAILURE; @@ -296,10 +295,10 @@ PHP_HTTP_API zval *_http_get_server_var_ex(const char *key, size_t key_size, zen zval **hsv; zval **var; - if (SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &hsv)) { + if ((SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &hsv)) || (Z_TYPE_PP(hsv) != IS_ARRAY)) { return NULL; } - if (SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void **) &var)) { + if ((SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void **) &var)) || (Z_TYPE_PP(var) != IS_STRING)) { return NULL; } if (check && !(Z_STRVAL_PP(var) && Z_STRLEN_PP(var))) {