lbarnaud Thu Nov 13 10:33:08 2008 UTC
Modified files:
/php-src/ext/standard basic_functions.c head.c head.h
/php-src/main SAPI.c SAPI.h
/php-src/sapi/apache mod_php.c
/php-src/sapi/apache2handler sapi_apache2.c
/php-src/sapi/cgi/tests 011.phpt
/php-src/sapi/cli php_cli.c
Log:
MFB: Added header_remove() (chsc at peytz dotdk, Arnaud)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.935&r2=1.936&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.935
php-src/ext/standard/basic_functions.c:1.936
--- php-src/ext/standard/basic_functions.c:1.935 Thu Nov 13 05:46:51 2008
+++ php-src/ext/standard/basic_functions.c Thu Nov 13 10:33:08 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.935 2008/11/13 05:46:51 lbarnaud Exp $ */
+/* $Id: basic_functions.c,v 1.936 2008/11/13 10:33:08 lbarnaud Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -1679,6 +1679,11 @@
ZEND_END_ARG_INFO()
static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_header_remove, 0, 0, 0)
+ ZEND_ARG_INFO(0, name)
+ZEND_END_ARG_INFO()
+
+static
ZEND_BEGIN_ARG_INFO_EX(arginfo_setcookie, 0, 0, 1)
ZEND_ARG_INFO(0, name)
ZEND_ARG_INFO(0, value)
@@ -3479,6 +3484,7 @@
PHP_FE(setcookie,
arginfo_setcookie)
PHP_FE(setrawcookie,
arginfo_setrawcookie)
PHP_FE(header,
arginfo_header)
+ PHP_FE(header_remove,
arginfo_header_remove)
PHP_FE(headers_sent,
arginfo_headers_sent)
PHP_FE(headers_list,
arginfo_headers_list)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/head.c?r1=1.102&r2=1.103&diff_format=u
Index: php-src/ext/standard/head.c
diff -u php-src/ext/standard/head.c:1.102 php-src/ext/standard/head.c:1.103
--- php-src/ext/standard/head.c:1.102 Tue Oct 21 22:06:48 2008
+++ php-src/ext/standard/head.c Thu Nov 13 10:33:08 2008
@@ -15,7 +15,7 @@
| Author: Rasmus Lerdorf <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: head.c,v 1.102 2008/10/21 22:06:48 lbarnaud Exp $ */
+/* $Id: head.c,v 1.103 2008/11/13 10:33:08 lbarnaud Exp $ */
#include <stdio.h>
#include "php.h"
@@ -50,6 +50,20 @@
}
/* }}} */
+/* {{{ proto void header_remove([string name]) U
+ Removes an HTTP header previously set using header() */
+PHP_FUNCTION(header_remove)
+{
+ sapi_header_line ctr = {0};
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s&", &ctr.line,
+ &ctr.line_len, UG(ascii_conv)) == FAILURE)
+ return;
+
+ sapi_header_op(ZEND_NUM_ARGS() == 0 ? SAPI_HEADER_DELETE_ALL :
SAPI_HEADER_DELETE, &ctr TSRMLS_CC);
+}
+/* }}} */
+
PHPAPI int php_header(TSRMLS_D) /* {{{ */
{
if (sapi_send_headers(TSRMLS_C)==FAILURE ||
SG(request_info).headers_only) {
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/head.h?r1=1.32&r2=1.33&diff_format=u
Index: php-src/ext/standard/head.h
diff -u php-src/ext/standard/head.h:1.32 php-src/ext/standard/head.h:1.33
--- php-src/ext/standard/head.h:1.32 Mon Dec 31 07:12:15 2007
+++ php-src/ext/standard/head.h Thu Nov 13 10:33:08 2008
@@ -16,13 +16,14 @@
+----------------------------------------------------------------------+
*/
-/* $Id: head.h,v 1.32 2007/12/31 07:12:15 sebastian Exp $ */
+/* $Id: head.h,v 1.33 2008/11/13 10:33:08 lbarnaud Exp $ */
#ifndef HEAD_H
#define HEAD_H
extern PHP_RINIT_FUNCTION(head);
PHP_FUNCTION(header);
+PHP_FUNCTION(header_remove);
PHP_FUNCTION(setcookie);
PHP_FUNCTION(setrawcookie);
PHP_FUNCTION(headers_sent);
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.c?r1=1.230&r2=1.231&diff_format=u
Index: php-src/main/SAPI.c
diff -u php-src/main/SAPI.c:1.230 php-src/main/SAPI.c:1.231
--- php-src/main/SAPI.c:1.230 Wed Mar 19 16:37:48 2008
+++ php-src/main/SAPI.c Thu Nov 13 10:33:08 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: SAPI.c,v 1.230 2008/03/19 16:37:48 rasmus Exp $ */
+/* $Id: SAPI.c,v 1.231 2008/11/13 10:33:08 lbarnaud Exp $ */
#include <ctype.h>
#include <sys/stat.h>
@@ -520,7 +520,8 @@
static int sapi_find_matching_header(void *element1, void *element2)
{
- return strncasecmp(((sapi_header_struct*)element1)->header,
(char*)element2, strlen((char*)element2)) == 0;
+ int len = strlen((char*)element2);
+ return strncasecmp(((sapi_header_struct*)element1)->header,
(char*)element2, len) == 0 && ((sapi_header_struct*)element1)->header[len] ==
':';
}
SAPI_API int sapi_add_header_ex(char *header_line, uint header_line_len,
zend_bool duplicate, zend_bool replace TSRMLS_DC)
@@ -548,7 +549,6 @@
long myuid = 0L;
char *header_line;
uint header_line_len;
- zend_bool replace;
int http_response_code;
if (SG(headers_sent) && !SG(request_info).no_headers) {
@@ -569,8 +569,9 @@
sapi_update_response_code((int)(zend_intptr_t) arg TSRMLS_CC);
return SUCCESS;
+ case SAPI_HEADER_ADD:
case SAPI_HEADER_REPLACE:
- case SAPI_HEADER_ADD: {
+ case SAPI_HEADER_DELETE: {
sapi_header_line *p = arg;
if (!p->line || !p->line_len) {
@@ -579,9 +580,15 @@
header_line = p->line;
header_line_len = p->line_len;
http_response_code = p->response_code;
- replace = (op == SAPI_HEADER_REPLACE);
break;
}
+
+ case SAPI_HEADER_DELETE_ALL:
+ if (sapi_module.header_handler) {
+ sapi_module.header_handler(&sapi_header, op,
&SG(sapi_headers) TSRMLS_CC);
+ }
+ zend_llist_clean(&SG(sapi_headers).headers);
+ return SUCCESS;
default:
return FAILURE;
@@ -593,8 +600,14 @@
while(header_line_len && isspace(header_line[header_line_len-1]))
header_line[--header_line_len]='\0';
- /* new line safety check */
- {
+ if (op == SAPI_HEADER_DELETE) {
+ if (strchr(header_line, ':')) {
+ efree(header_line);
+ sapi_module.sapi_error(E_WARNING, "Header to delete may
not contain colon.");
+ return FAILURE;
+ }
+ } else {
+ /* new line safety check */
char *s = header_line, *e = header_line + header_line_len, *p;
while (s < e && (p = memchr(s, '\n', (e - s)))) {
if (*(p + 1) == ' ' || *(p + 1) == '\t') {
@@ -609,7 +622,15 @@
sapi_header.header = header_line;
sapi_header.header_len = header_line_len;
- sapi_header.replace = replace;
+
+ if (op == SAPI_HEADER_DELETE) {
+ if (sapi_module.header_handler) {
+ sapi_module.header_handler(&sapi_header, op,
&SG(sapi_headers) TSRMLS_CC);
+ }
+ zend_llist_del_element(&SG(sapi_headers).headers,
sapi_header.header, (int(*)(void*, void*))sapi_find_matching_header);
+ sapi_free_header(&sapi_header);
+ return SUCCESS;
+ }
/* Check the header for a few cases that we have special support for in
SAPI */
if (header_line_len>=5
@@ -688,20 +709,16 @@
sapi_update_response_code(http_response_code TSRMLS_CC);
}
if (sapi_module.header_handler) {
- retval = sapi_module.header_handler(&sapi_header,
&SG(sapi_headers) TSRMLS_CC);
+ retval = sapi_module.header_handler(&sapi_header, op,
&SG(sapi_headers) TSRMLS_CC);
} else {
retval = SAPI_HEADER_ADD;
}
- if (retval & SAPI_HEADER_DELETE_ALL) {
- zend_llist_clean(&SG(sapi_headers).headers);
- }
if (retval & SAPI_HEADER_ADD) {
/* in replace mode first remove the header if it already exists
in the headers llist */
- if (replace) {
+ if (op == SAPI_HEADER_REPLACE) {
colon_offset = strchr(sapi_header.header, ':');
if (colon_offset) {
char sav;
- colon_offset++;
sav = *colon_offset;
*colon_offset = 0;
zend_llist_del_element(&SG(sapi_headers).headers, sapi_header.header,
(int(*)(void*, void*))sapi_find_matching_header);
@@ -710,6 +727,8 @@
}
zend_llist_add_element(&SG(sapi_headers).headers, (void *)
&sapi_header);
+ } else {
+ sapi_free_header(&sapi_header);
}
return SUCCESS;
}
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.h?r1=1.124&r2=1.125&diff_format=u
Index: php-src/main/SAPI.h
diff -u php-src/main/SAPI.h:1.124 php-src/main/SAPI.h:1.125
--- php-src/main/SAPI.h:1.124 Wed Mar 19 16:37:48 2008
+++ php-src/main/SAPI.h Thu Nov 13 10:33:08 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: SAPI.h,v 1.124 2008/03/19 16:37:48 rasmus Exp $ */
+/* $Id: SAPI.h,v 1.125 2008/11/13 10:33:08 lbarnaud Exp $ */
#ifndef SAPI_H
#define SAPI_H
@@ -50,7 +50,6 @@
typedef struct {
char *header;
uint header_len;
- zend_bool replace;
} sapi_header_struct;
@@ -170,6 +169,8 @@
typedef enum { /* Parameter:
*/
SAPI_HEADER_REPLACE, /* sapi_header_line* */
SAPI_HEADER_ADD, /* sapi_header_line* */
+ SAPI_HEADER_DELETE, /* sapi_header_line* */
+ SAPI_HEADER_DELETE_ALL, /* void
*/
SAPI_HEADER_SET_STATUS /* int
*/
} sapi_header_op_enum;
@@ -228,7 +229,7 @@
void (*sapi_error)(int type, const char *error_msg, ...);
- int (*header_handler)(sapi_header_struct *sapi_header,
sapi_headers_struct *sapi_headers TSRMLS_DC);
+ int (*header_handler)(sapi_header_struct *sapi_header,
sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC);
int (*send_headers)(sapi_headers_struct *sapi_headers TSRMLS_DC);
void (*send_header)(sapi_header_struct *sapi_header, void
*server_context TSRMLS_DC);
@@ -277,8 +278,6 @@
/* header_handler() constants */
#define SAPI_HEADER_ADD (1<<0)
-#define SAPI_HEADER_DELETE_ALL (1<<1)
-#define SAPI_HEADER_SEND_NOW (1<<2)
#define SAPI_HEADER_SENT_SUCCESSFULLY 1
http://cvs.php.net/viewvc.cgi/php-src/sapi/apache/mod_php.c?r1=1.9&r2=1.10&diff_format=u
Index: php-src/sapi/apache/mod_php.c
diff -u php-src/sapi/apache/mod_php.c:1.9 php-src/sapi/apache/mod_php.c:1.10
--- php-src/sapi/apache/mod_php.c:1.9 Sat Jun 28 10:16:24 2008
+++ php-src/sapi/apache/mod_php.c Thu Nov 13 10:33:08 2008
@@ -17,7 +17,7 @@
| PHP 4.0 patches by Zeev Suraski <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: mod_php.c,v 1.9 2008/06/28 10:16:24 indeyets Exp $ */
+/* $Id: mod_php.c,v 1.10 2008/11/13 10:33:08 lbarnaud Exp $ */
#include "php_apache_http.h"
#include "http_conf_globals.h"
@@ -35,7 +35,7 @@
static void php_restore_umask(void);
static int sapi_apache_read_post(char *buffer, uint count_bytes TSRMLS_DC);
static char *sapi_apache_read_cookies(TSRMLS_D);
-static int sapi_apache_header_handler(sapi_header_struct *sapi_header,
sapi_headers_struct *sapi_headers TSRMLS_DC);
+static int sapi_apache_header_handler(sapi_header_struct *sapi_header,
sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC);
static int sapi_apache_send_headers(sapi_headers_struct *sapi_headers
TSRMLS_DC);
static int send_php(request_rec *r, int display_source_mode, char *filename);
static int send_parsed_php(request_rec * r);
@@ -163,41 +163,54 @@
/* {{{ sapi_apache_header_handler
*/
-static int sapi_apache_header_handler(sapi_header_struct *sapi_header,
sapi_headers_struct *sapi_headers TSRMLS_DC)
+static int sapi_apache_header_handler(sapi_header_struct *sapi_header,
sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC)
{
char *header_name, *header_content, *p;
request_rec *r = (request_rec *) SG(server_context);
if(!r) {
- efree(sapi_header->header);
return 0;
}
-
- header_name = sapi_header->header;
- header_content = p = strchr(header_name, ':');
- if (!p) {
- efree(sapi_header->header);
- return 0;
- }
+ switch(op) {
+ case SAPI_HEADER_DELETE_ALL:
+ clear_table(r->headers_out);
+ return 0;
+
+ case SAPI_HEADER_DELETE:
+ table_unset(r->headers_out, sapi_header->header);
+ return 0;
+
+ case SAPI_HEADER_ADD:
+ case SAPI_HEADER_REPLACE:
+ header_name = sapi_header->header;
+
+ header_content = p = strchr(header_name, ':');
+ if (!p) {
+ return 0;
+ }
- *p = 0;
- do {
- header_content++;
- } while (*header_content==' ');
-
- if (!strcasecmp(header_name, "Content-Type")) {
- r->content_type = pstrdup(r->pool, header_content);
- } else if (!strcasecmp(header_name, "Set-Cookie")) {
- table_add(r->headers_out, header_name, header_content);
- } else if (sapi_header->replace) {
- table_set(r->headers_out, header_name, header_content);
- } else {
- table_add(r->headers_out, header_name, header_content);
- }
+ *p = 0;
+ do {
+ header_content++;
+ } while (*header_content==' ');
+
+ if (!strcasecmp(header_name, "Content-Type")) {
+ r->content_type = pstrdup(r->pool,
header_content);
+ } else if (!strcasecmp(header_name, "Set-Cookie")) {
+ table_add(r->headers_out, header_name,
header_content);
+ } else if (op == SAPI_HEADER_REPLACE) {
+ table_set(r->headers_out, header_name,
header_content);
+ } else {
+ table_add(r->headers_out, header_name,
header_content);
+ }
- *p = ':'; /* a well behaved header handler shouldn't change its
original arguments */
+ *p = ':'; /* a well behaved header handler shouldn't
change its original arguments */
- return SAPI_HEADER_ADD;
+ return SAPI_HEADER_ADD;
+
+ default:
+ return 0;
+ }
}
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/sapi/apache2handler/sapi_apache2.c?r1=1.87&r2=1.88&diff_format=u
Index: php-src/sapi/apache2handler/sapi_apache2.c
diff -u php-src/sapi/apache2handler/sapi_apache2.c:1.87
php-src/sapi/apache2handler/sapi_apache2.c:1.88
--- php-src/sapi/apache2handler/sapi_apache2.c:1.87 Wed Mar 19 16:37:48 2008
+++ php-src/sapi/apache2handler/sapi_apache2.c Thu Nov 13 10:33:08 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sapi_apache2.c,v 1.87 2008/03/19 16:37:48 rasmus Exp $ */
+/* $Id: sapi_apache2.c,v 1.88 2008/11/13 10:33:08 lbarnaud Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -83,40 +83,55 @@
}
static int
-php_apache_sapi_header_handler(sapi_header_struct
*sapi_header,sapi_headers_struct *sapi_headers TSRMLS_DC)
+php_apache_sapi_header_handler(sapi_header_struct *sapi_header,
sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC)
{
php_struct *ctx;
char *val, *ptr;
ctx = SG(server_context);
- val = strchr(sapi_header->header, ':');
+ switch (op) {
+ case SAPI_HEADER_DELETE:
+ apr_table_unset(ctx->r->headers_out,
sapi_header->header);
+ return 0;
+
+ case SAPI_HEADER_DELETE_ALL:
+ apr_table_clear(ctx->r->headers_out);
+ return 0;
+
+ case SAPI_HEADER_ADD:
+ case SAPI_HEADER_REPLACE:
+ val = strchr(sapi_header->header, ':');
- if (!val) {
- sapi_free_header(sapi_header);
- return 0;
- }
- ptr = val;
+ if (!val) {
+ return 0;
+ }
+ ptr = val;
- *val = '\0';
+ *val = '\0';
- do {
- val++;
- } while (*val == ' ');
-
- if (!strcasecmp(sapi_header->header, "content-type")) {
- if (ctx->content_type) {
- efree(ctx->content_type);
- }
- ctx->content_type = estrdup(val);
- } else if (sapi_header->replace) {
- apr_table_set(ctx->r->headers_out, sapi_header->header, val);
- } else {
- apr_table_add(ctx->r->headers_out, sapi_header->header, val);
+ do {
+ val++;
+ } while (*val == ' ');
+
+ if (!strcasecmp(sapi_header->header, "content-type")) {
+ if (ctx->content_type) {
+ efree(ctx->content_type);
+ }
+ ctx->content_type = estrdup(val);
+ } else if (op == SAPI_HEADER_REPLACE) {
+ apr_table_set(ctx->r->headers_out,
sapi_header->header, val);
+ } else {
+ apr_table_add(ctx->r->headers_out,
sapi_header->header, val);
+ }
+
+ *ptr = ':';
+
+ return SAPI_HEADER_ADD;
+
+ default:
+ return 0;
}
- *ptr = ':';
-
- return SAPI_HEADER_ADD;
}
static int
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/tests/011.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/sapi/cgi/tests/011.phpt
diff -u /dev/null php-src/sapi/cgi/tests/011.phpt:1.2
--- /dev/null Thu Nov 13 10:33:08 2008
+++ php-src/sapi/cgi/tests/011.phpt Thu Nov 13 10:33:08 2008
@@ -0,0 +1,165 @@
+--TEST--
+header_remove()
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+include "include.inc";
+
+$php = get_cgi_path();
+reset_env_vars();
+
+$f = tempnam(sys_get_temp_dir(), 'cgitest');
+
+function test($script) {
+ file_put_contents($GLOBALS['f'], $script);
+ $cmd = escapeshellcmd($GLOBALS['php']);
+ $cmd .= ' -n -dreport_zend_debug=0 -dhtml_errors=0 ' .
escapeshellarg($GLOBALS['f']);
+ echo "----------\n";
+ echo rtrim($script) . "\n";
+ echo "----------\n";
+ passthru($cmd);
+}
+
+test('<?php ?>');
+test('<?php header_remove(); ?>');
+test('<?php header_remove("X-Foo"); ?>');
+test('<?php
+header("X-Foo: Bar");
+?>');
+test('<?php
+header("X-Foo: Bar");
+header("X-Bar: Baz");
+header_remove("X-Foo");
+?>');
+test('<?php
+header("X-Foo: Bar");
+header_remove("X-Foo: Bar");
+?>');
+test('<?php
+header("X-Foo: Bar");
+header_remove("X-Foo:");
+?>');
+test('<?php
+header("X-Foo: Bar");
+header_remove();
+?>');
+test('<?php
+header_remove("");
+?>');
+test('<?php
+header_remove(":");
+?>');
+test('<?php
+header("X-Foo: Bar");
+echo "flush\n";
+flush();
+header_remove("X-Foo");
+?>');
+
[EMAIL PROTECTED]($f);
+?>
+--EXPECTF--
+----------
+<?php ?>
+----------
+X-Powered-By: PHP/%s
+Content-type: %s
+
+----------
+<?php header_remove(); ?>
+----------
+Content-type: %s
+
+----------
+<?php header_remove("X-Foo"); ?>
+----------
+X-Powered-By: PHP/%s
+Content-type: %s
+
+----------
+<?php
+header("X-Foo: Bar");
+?>
+----------
+X-Powered-By: PHP/%s
+X-Foo: Bar
+Content-type: %s
+
+----------
+<?php
+header("X-Foo: Bar");
+header("X-Bar: Baz");
+header_remove("X-Foo");
+?>
+----------
+X-Powered-By: PHP/%s
+X-Bar: Baz
+Content-type: %s
+
+----------
+<?php
+header("X-Foo: Bar");
+header_remove("X-Foo: Bar");
+?>
+----------
+X-Powered-By: PHP/%s
+X-Foo: Bar
+Content-type: %s
+
+
+Warning: Header to delete may not contain colon. in %s on line 3
+----------
+<?php
+header("X-Foo: Bar");
+header_remove("X-Foo:");
+?>
+----------
+X-Powered-By: PHP/%s
+X-Foo: Bar
+Content-type: %s
+
+
+Warning: Header to delete may not contain colon. in %s on line 3
+----------
+<?php
+header("X-Foo: Bar");
+header_remove();
+?>
+----------
+Content-type: %s
+
+----------
+<?php
+header_remove("");
+?>
+----------
+X-Powered-By: PHP/%s
+Content-type: %s
+
+----------
+<?php
+header_remove(":");
+?>
+----------
+X-Powered-By: PHP/%s
+Content-type: %s
+
+
+Warning: Header to delete may not contain colon. in %s on line 2
+----------
+<?php
+header("X-Foo: Bar");
+echo "flush\n";
+flush();
+header_remove("X-Foo");
+?>
+----------
+X-Powered-By: PHP/%s
+X-Foo: Bar
+Content-type: %s
+
+flush
+
+Warning: Cannot modify header information - headers already sent by (output
started at %s:3) in %s on line 5
http://cvs.php.net/viewvc.cgi/php-src/sapi/cli/php_cli.c?r1=1.198&r2=1.199&diff_format=u
Index: php-src/sapi/cli/php_cli.c
diff -u php-src/sapi/cli/php_cli.c:1.198 php-src/sapi/cli/php_cli.c:1.199
--- php-src/sapi/cli/php_cli.c:1.198 Sun Nov 2 21:10:13 2008
+++ php-src/sapi/cli/php_cli.c Thu Nov 13 10:33:08 2008
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_cli.c,v 1.198 2008/11/02 21:10:13 felipe Exp $ */
+/* $Id: php_cli.c,v 1.199 2008/11/13 10:33:08 lbarnaud Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -351,11 +351,8 @@
}
/* }}} */
-static int sapi_cli_header_handler(sapi_header_struct *h, sapi_headers_struct
*s TSRMLS_DC) /* {{{ */
+static int sapi_cli_header_handler(sapi_header_struct *h, sapi_header_op_enum
op, sapi_headers_struct *s TSRMLS_DC) /* {{{ */
{
- /* free allocated header line */
- efree(h->header);
- /* avoid pushing headers into SAPI headers list */
return 0;
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php