- new negotiator + test
[m6w6/ext-http] / http_api.c
index e2019ad47a4a4de301b7bc0f0a902ab9e4e7b3b9..f59a7d0a75cf2d7fd7561b624d2068ff9406d840 100644 (file)
@@ -37,6 +37,9 @@
 #include <ctype.h>
 
 #ifdef HTTP_HAVE_MAGIC
+#      if defined(PHP_WIN32) && !defined(USE_MAGIC_DLL) && !defined(USE_MAGIC_STATIC)
+#              define USE_MAGIC_STATIC
+#      endif
 #      include <magic.h>
 #endif
 
@@ -161,24 +164,20 @@ STATUS _http_parse_key_list(const char *list, HashTable *items, char separator,
 /* }}} */
 
 /* {{{ void http_error(long, long, char*) */
-void _http_error_ex(long type, long code, const char *format, ...)
+void _http_error_ex(long type TSRMLS_DC, 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);
 }
 /* }}} */
@@ -198,7 +197,7 @@ void _http_log_ex(char *file, const char *ident, const char *message TSRMLS_DC)
                php_stream *log = php_stream_open_wrapper(file, "ab", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL); \
                 \
                if (log) { \
-                       php_stream_printf(log TSRMLS_CC, "%s [%12s] %32s <%s>%s", datetime, type, msg, SG(request_info).request_uri, PHP_EOL); \
+                       php_stream_printf(log TSRMLS_CC, "%s\t[%s]\t%s\t<%s>%s", datetime, type, msg, SG(request_info).request_uri, PHP_EOL); \
                        php_stream_close(log); \
                } \
         \
@@ -393,13 +392,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