kalle                                    Tue, 12 Jul 2011 03:56:32 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=313156

Log:
Changed http_response_code() to be able to set a response code

Changed paths:
    U   php/php-src/branches/PHP_5_4/NEWS
    U   php/php-src/branches/PHP_5_4/ext/standard/basic_functions.c
    U   php/php-src/branches/PHP_5_4/ext/standard/head.c
    U   php/php-src/trunk/ext/standard/basic_functions.c
    U   php/php-src/trunk/ext/standard/head.c

Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS   2011-07-12 01:40:32 UTC (rev 313155)
+++ php/php-src/branches/PHP_5_4/NEWS   2011-07-12 03:56:32 UTC (rev 313156)
@@ -1,4 +1,4 @@
-PHP                                                                        NEWS
+PHP                                                                        
NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2011, PHP 5.4.0 Alpha 2
 - General improvements:
@@ -16,6 +16,7 @@
   . Lowered default value for Process Manager. FR #54098. (fat)

 - Improved core functions:
+  . Changed http_response_code() to be able to set a response code. (Kalle)
   . Fixed crypt_blowfish handling of 8-bit characters. (Stas) (CVE-2011-2483)
   . Fixed bug#55084 (Function registered by header_register_callback is
     called only once per process). (Hannes)

Modified: php/php-src/branches/PHP_5_4/ext/standard/basic_functions.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/standard/basic_functions.c 2011-07-12 
01:40:32 UTC (rev 313155)
+++ php/php-src/branches/PHP_5_4/ext/standard/basic_functions.c 2011-07-12 
03:56:32 UTC (rev 313156)
@@ -1481,7 +1481,8 @@
 ZEND_BEGIN_ARG_INFO(arginfo_headers_list, 0)
 ZEND_END_ARG_INFO()

-ZEND_BEGIN_ARG_INFO(arginfo_http_response_code, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_http_response_code, 0, 0, 0)
+       ZEND_ARG_INFO(0, response_code)
 ZEND_END_ARG_INFO()
 /* }}} */
 /* {{{ html.c */

Modified: php/php-src/branches/PHP_5_4/ext/standard/head.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/standard/head.c    2011-07-12 01:40:32 UTC 
(rev 313155)
+++ php/php-src/branches/PHP_5_4/ext/standard/head.c    2011-07-12 03:56:32 UTC 
(rev 313156)
@@ -280,14 +280,30 @@
 }
 /* }}} */

-/* {{{ proto long http_response_code()
-   Returns the current HTTP response code */
+/* {{{ proto long http_response_code([int response_code])
+   Sets a response code, or returns the current HTTP response code */
 PHP_FUNCTION(http_response_code)
 {
-       if (zend_parse_parameters_none() == FAILURE) {
+       long response_code = 0;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", 
&response_code) == FAILURE) {
                return;
        }

+       if (response_code)
+       {
+               long old_response_code;
+
+               old_response_code = SG(sapi_headers).http_response_code;
+               SG(sapi_headers).http_response_code = response_code;
+
+               if (old_response_code) {
+                       RETURN_LONG(old_response_code);
+               }
+
+               RETURN_TRUE;
+       }
+
        if (!SG(sapi_headers).http_response_code) {
                RETURN_FALSE;
        }

Modified: php/php-src/trunk/ext/standard/basic_functions.c
===================================================================
--- php/php-src/trunk/ext/standard/basic_functions.c    2011-07-12 01:40:32 UTC 
(rev 313155)
+++ php/php-src/trunk/ext/standard/basic_functions.c    2011-07-12 03:56:32 UTC 
(rev 313156)
@@ -1483,7 +1483,8 @@
 ZEND_BEGIN_ARG_INFO(arginfo_headers_list, 0)
 ZEND_END_ARG_INFO()

-ZEND_BEGIN_ARG_INFO(arginfo_http_response_code, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_http_response_code, 0, 0, 0)
+       ZEND_ARG_INFO(0, response_code)
 ZEND_END_ARG_INFO()
 /* }}} */
 /* {{{ html.c */

Modified: php/php-src/trunk/ext/standard/head.c
===================================================================
--- php/php-src/trunk/ext/standard/head.c       2011-07-12 01:40:32 UTC (rev 
313155)
+++ php/php-src/trunk/ext/standard/head.c       2011-07-12 03:56:32 UTC (rev 
313156)
@@ -280,14 +280,30 @@
 }
 /* }}} */

-/* {{{ proto long http_response_code()
-   Returns the current HTTP response code */
+/* {{{ proto long http_response_code([int response_code])
+   Sets a response code, or returns the current HTTP response code */
 PHP_FUNCTION(http_response_code)
 {
-       if (zend_parse_parameters_none() == FAILURE) {
+       long response_code = 0;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", 
&response_code) == FAILURE) {
                return;
        }

+       if (response_code)
+       {
+               long old_response_code;
+
+               old_response_code = SG(sapi_headers).http_response_code;
+               SG(sapi_headers).http_response_code = response_code;
+
+               if (old_response_code) {
+                       RETURN_LONG(old_response_code);
+               }
+
+               RETURN_TRUE;
+       }
+
        if (!SG(sapi_headers).http_response_code) {
                RETURN_FALSE;
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to