- simplify http_send_header API
[m6w6/ext-http] / http_functions.c
index 4e67be7aee3fac005c0e2f083d096c94e0986b60..ee8fba4e987df6ff8b0664a83dfa7095b3012a4f 100644 (file)
 #ifdef HAVE_CONFIG_H
 #      include "config.h"
 #endif
-
 #include "php.h"
+
+#include "SAPI.h"
 #include "php_ini.h"
 #include "ext/standard/info.h"
 #include "ext/session/php_session.h"
 #include "ext/standard/php_string.h"
 
-#include "SAPI.h"
-
-#include "phpstr/phpstr.h"
-
 #include "php_http.h"
 #include "php_http_std_defs.h"
 #include "php_http_api.h"
@@ -42,6 +39,8 @@
 #include "php_http_send_api.h"
 #include "php_http_url_api.h"
 
+#include "phpstr/phpstr.h"
+
 ZEND_EXTERN_MODULE_GLOBALS(http)
 
 /* {{{ proto string http_date([int timestamp])
@@ -203,7 +202,7 @@ PHP_FUNCTION(http_send_status)
                RETURN_FALSE;
        }
        if (status < 100 || status > 510) {
-               http_error_ex(E_WARNING, HTTP_E_HEADER, "Invalid HTTP status code (100-510): %d", status);
+               http_error_ex(HE_WARNING, HTTP_E_HEADER, "Invalid HTTP status code (100-510): %d", status);
                RETURN_FALSE;
        }
 
@@ -475,7 +474,7 @@ PHP_FUNCTION(http_redirect)
                        array_init(params);
                }
                if (add_assoc_string(params, PS(session_name), PS(id), 1) != SUCCESS) {
-                       http_error(E_WARNING, HTTP_E_ENCODE, "Could not append session information");
+                       http_error(HE_WARNING, HTTP_E_RUNTIME, "Could not append session information");
                }
        }
 
@@ -498,8 +497,10 @@ PHP_FUNCTION(http_redirect)
        }
        efree(URI);
 
-       if ((SUCCESS == http_send_header(LOC)) && (SUCCESS == http_send_status((permanent ? 301 : 302)))) {
-               php_body_write(RED, strlen(RED) TSRMLS_CC);
+       if ((SUCCESS == http_send_header_string(LOC)) && (SUCCESS == http_send_status((permanent ? 301 : 302)))) {
+               if (SG(request_info).request_method && strcmp(SG(request_info).request_method, "HEAD")) {
+                       PHPWRITE(RED, strlen(RED));
+               }
                RETURN_TRUE;
        }
        RETURN_FALSE;
@@ -619,7 +620,6 @@ PHP_FUNCTION(http_split_response)
        array_init(zheaders);
 
        if (SUCCESS != http_split_response(response, response_len, Z_ARRVAL_P(zheaders), &body, &body_len)) {
-               http_error(E_WARNING, HTTP_E_PARSE, "Could not parse HTTP response");
                RETURN_FALSE;
        }
 
@@ -643,7 +643,6 @@ PHP_FUNCTION(http_parse_headers)
 
        array_init(return_value);
        if (SUCCESS != http_parse_headers(header, return_value)) {
-               http_error(E_WARNING, HTTP_E_PARSE, "Could not parse HTTP headers");
                zval_dtor(return_value);
                RETURN_FALSE;
        }
@@ -675,7 +674,7 @@ PHP_FUNCTION(http_get_request_body)
        NO_ARGS;
 
        if (SUCCESS == http_get_request_body(&body, &length)) {
-               RETURN_STRING(body, (int) length, 0);
+               RETURN_STRINGL(body, (int) length, 0);
        } else {
                RETURN_NULL();
        }
@@ -690,7 +689,7 @@ PHP_FUNCTION(http_match_request_header)
 {
        char *header, *value;
        int header_len, value_len;
-       zend_bool match_case = 0, result = 0;
+       zend_bool match_case = 0;
 
        if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|b", &header, &header_len, &value, &value_len, &match_case)) {
                RETURN_FALSE;
@@ -738,7 +737,6 @@ PHP_FUNCTION(http_match_request_header)
  *  - timeout:          int, seconds the request may take
  *  - connecttimeout:   int, seconds the connect may take
  *  - onprogress:       mixed, progress callback
- *  - ondebug:          mixed, debug callback
  * </pre>
  *
  * The optional third parameter will be filled with some additional information
@@ -1229,7 +1227,7 @@ PHP_FUNCTION(http_build_query)
        }
 
        if (Z_TYPE_P(formdata) != IS_ARRAY && Z_TYPE_P(formdata) != IS_OBJECT) {
-               http_error(E_WARNING, HTTP_E_PARAM, "Parameter 1 expected to be Array or Object.  Incorrect value given.");
+               http_error(HE_WARNING, HTTP_E_INVALID_PARAM, "Parameter 1 expected to be Array or Object.  Incorrect value given.");
                RETURN_FALSE;
        }
 
@@ -1256,7 +1254,7 @@ PHP_FUNCTION(http_build_query)
 
 PHP_FUNCTION(http_test)
 {
-       RETURN_NULL();
+       RETURN_BOOL(HTTP_G(only_exceptions));
 }
 
 /*
@@ -1267,3 +1265,4 @@ PHP_FUNCTION(http_test)
  * vim600: noet sw=4 ts=4 fdm=marker
  * vim<600: noet sw=4 ts=4
  */
+