mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
MFB: Added header_remove() (chsc at peytz dotdk, Arnaud)
This commit is contained in:
parent
f24bc6f421
commit
047870a61f
9 changed files with 300 additions and 71 deletions
|
@ -83,40 +83,55 @@ php_apache_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)
|
|||
}
|
||||
|
||||
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;
|
||||
|
||||
if (!val) {
|
||||
sapi_free_header(sapi_header);
|
||||
return 0;
|
||||
}
|
||||
ptr = val;
|
||||
case SAPI_HEADER_DELETE_ALL:
|
||||
apr_table_clear(ctx->r->headers_out);
|
||||
return 0;
|
||||
|
||||
*val = '\0';
|
||||
case SAPI_HEADER_ADD:
|
||||
case SAPI_HEADER_REPLACE:
|
||||
val = strchr(sapi_header->header, ':');
|
||||
|
||||
if (!val) {
|
||||
return 0;
|
||||
}
|
||||
ptr = val;
|
||||
|
||||
*val = '\0';
|
||||
|
||||
do {
|
||||
val++;
|
||||
} while (*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 (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);
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue