- tests fixup
[m6w6/ext-http] / http_api.c
index eebfeb2ef80840c9f2f53bb46b3782413941dcea..c5c63f95cd129ac8a72d8fc310d413971e27c0fd 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "SAPI.h"
 #include "ext/standard/url.h"
+#include "ext/standard/head.h"
 
 #include "php_http.h"
 #include "php_http_std_defs.h"
@@ -175,6 +176,7 @@ void _http_error_ex(long type TSRMLS_DC, long code, const char *format, ...)
                
                vspprintf(&message, 0, format, args);
                zend_throw_exception(http_exception_get_for_code(code), message, code TSRMLS_CC);
+               efree(message);
        } else
 #endif
        php_verror(NULL, "", type, format, args TSRMLS_CC);
@@ -220,7 +222,7 @@ STATUS _http_exit_ex(int status, char *header, char *body, zend_bool send_header
                }
        }
        
-       if (body) {
+       if (php_header(TSRMLS_C) && body) {
                PHPWRITE(body, strlen(body));
        }
        
@@ -228,6 +230,8 @@ STATUS _http_exit_ex(int status, char *header, char *body, zend_bool send_header
        {
                case 301:       http_log(HTTP_G(log).redirect, "301-REDIRECT", header);                 break;
                case 302:       http_log(HTTP_G(log).redirect, "302-REDIRECT", header);                 break;
+               case 303:       http_log(HTTP_G(log).redirect, "303-REDIRECT", header);                 break;
+               case 307:       http_log(HTTP_G(log).redirect, "307-REDIRECT", header);                 break;
                case 304:       http_log(HTTP_G(log).cache, "304-CACHE", header);                               break;
                case 405:       http_log(HTTP_G(log).allowed_methods, "405-ALLOWED", header);   break;
                default:        http_log(NULL, header, body);                                                                   break;