X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_api.c;h=cbc5a60d7d9adefdc21eb592c4bc0ff6e0f0eb72;hp=e2019ad47a4a4de301b7bc0f0a902ab9e4e7b3b9;hb=f4b831c61cac25db5250db4b5421a5cdf3933ef0;hpb=a673ef718611fe1a7c8a4c61b2f4c97fc06efc2d diff --git a/http_api.c b/http_api.c index e2019ad..cbc5a60 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) && !defined(USE_MAGIC_STATIC) +# define USE_MAGIC_STATIC +# endif # include #endif @@ -165,20 +168,17 @@ void _http_error_ex(long type, long code, const char *format, ...) { va_list args; TSRMLS_FETCH(); - + va_start(args, format); - if (type == E_THROW) { #ifdef ZEND_ENGINE_2 + if ((type == E_THROW) || (PG(error_handling) == EH_THROW)) { 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 +393,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