X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_api.c;h=4e6942ad6ab1a466ac47eb738c3c93f48e75b706;hp=e2019ad47a4a4de301b7bc0f0a902ab9e4e7b3b9;hb=c71fd3a3bcc7231f2efc4c7520888880f42a6b3c;hpb=a673ef718611fe1a7c8a4c61b2f4c97fc06efc2d diff --git a/http_api.c b/http_api.c index e2019ad..4e6942a 100644 --- a/http_api.c +++ b/http_api.c @@ -37,6 +37,9 @@ #include #ifdef HTTP_HAVE_MAGIC +# if defined(PHP_WIN32) && !defined(USE_MAGIC_DLL) +# define USE_MAGIC_STATIC +# endif # include #endif @@ -164,21 +167,26 @@ STATUS _http_parse_key_list(const char *list, HashTable *items, char separator, void _http_error_ex(long type, long code, const char *format, ...) { va_list args; + zend_bool throw_exception = 0; TSRMLS_FETCH(); - va_start(args, format); if (type == E_THROW) { + throw_exception = 1; + type = E_WARNING; + } else if (PG(error_handling) == EH_THROW) { + throw_exception = 1; + } + + va_start(args, format); #ifdef ZEND_ENGINE_2 + if (throw_exception) { char *message; + vspprintf(&message, 0, format, args); zend_throw_exception(http_exception_get_for_code(code), message, code TSRMLS_CC); -#else - type = E_WARNING; + } else #endif - } - if (type != E_THROW) { - php_verror(NULL, "", type, format, args TSRMLS_CC); - } + php_verror(NULL, "", type, format, args TSRMLS_CC); va_end(args); } /* }}} */ @@ -393,13 +401,12 @@ PHP_HTTP_API char *_http_guess_content_type(const char *magicfile, long magicmod if (ctype) { ct = estrdup(ctype); } else { - http_error(HE_WARNING, HTTP_E_RUNTIME, "Failed to guess Content-Type"); - } - - if (magic) { - magic_close(magic); + http_error_ex(HE_WARNING, HTTP_E_RUNTIME, "Failed to guess Content-Type: %s", magic_error(magic)); } } + if (magic) { + magic_close(magic); + } #else http_error(HE_WARNING, HTTP_E_RUNTIME, "Cannot guess Content-Type; libmagic not available"); #endif