- create a request body only if there's something to feed into http_request_body_fill()
[m6w6/ext-http] / http_functions.c
index 6513149efada334c5b25548b2f579183b7e6473d..cbf9ad657d69c28a6b3a1170856c98e5ec988a65 100644 (file)
@@ -6,7 +6,7 @@
     | modification, are permitted provided that the conditions mentioned |
     | in the accompanying LICENSE file are met.                          |
     +--------------------------------------------------------------------+
-    | Copyright (c) 2004-2005, Michael Wallner <mike@php.net>            |
+    | Copyright (c) 2004-2006, Michael Wallner <mike@php.net>            |
     +--------------------------------------------------------------------+
 */
 
@@ -643,6 +643,7 @@ PHP_FUNCTION(http_throttle)
  * The HTTP response code will be set according to status.
  * You can use one of the following constants for convenience:
  *  - HTTP_REDIRECT                    302 Found
+ *  - HTTP_REDIRECT_AUTO       303 See Other for POST, else 302 Found
  *  - HTTP_REDIRECT_PERM       301 Moved Permanently
  *  - HTTP_REDIRECT_POST       303 See Other
  *  - HTTP_REDIRECT_TEMP       307 Temporary Redirect
@@ -665,7 +666,7 @@ PHP_FUNCTION(http_redirect)
        size_t query_len = 0;
        zend_bool session = 0, free_params = 0;
        zval *params = NULL;
-       long status = 302;
+       long status = HTTP_REDIRECT_AUTO;
        char *query = NULL, *url = NULL, *URI, *LOC, *RED = NULL;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sa!/bl", &url, &url_len, &params, &session, &status) != SUCCESS) {
@@ -720,7 +721,13 @@ PHP_FUNCTION(http_redirect)
                zval_dtor(params);
                FREE_ZVAL(params);
        }
-
+       
+#ifndef ZEND_ENGINE_2
+       if (!status && SG(request_info).request_method && !strcasecmp(SG(request_info).request_method, "POST")) {
+               status = HTTP_REDIRECT_POST;
+       }
+#endif
+       
        RETURN_SUCCESS(http_exit_ex(status, LOC, RED, 1));
 }
 /* }}} */