mirror of
https://github.com/php/php-src.git
synced 2025-08-17 22:48:57 +02:00
Updated header_handler in apache2filter and apache_hooks
This commit is contained in:
parent
494dbdb1c1
commit
aaaf67e19e
2 changed files with 78 additions and 44 deletions
|
@ -34,7 +34,7 @@ static void php_save_umask(void);
|
|||
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);
|
||||
|
@ -308,35 +308,54 @@ static char *sapi_apache_read_cookies(TSRMLS_D)
|
|||
|
||||
/* {{{ 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);
|
||||
|
||||
header_name = sapi_header->header;
|
||||
|
||||
header_content = p = strchr(header_name, ':');
|
||||
if (!p) {
|
||||
efree(sapi_header->header);
|
||||
if(!r) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*p = 0;
|
||||
do {
|
||||
header_content++;
|
||||
} while (*header_content==' ');
|
||||
switch(op) {
|
||||
case SAPI_HEADER_DELETE_ALL:
|
||||
clear_table(r->headers_out);
|
||||
return 0;
|
||||
|
||||
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 {
|
||||
table_set(r->headers_out, header_name, header_content);
|
||||
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 (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 */
|
||||
|
||||
return SAPI_HEADER_ADD;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
*p = ':'; /* a well behaved header handler shouldn't change its original arguments */
|
||||
|
||||
return SAPI_HEADER_ADD;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue