diff options
author | Remi Collet <remi@remirepo.net> | 2018-07-04 08:48:38 +0200 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2018-07-05 06:30:58 +0200 |
commit | 0ea4013f101d64fbeb9221260b36e98f10ed1ddd (patch) | |
tree | 8d5489659d8cf03a4ca1dc1f97b2ecb83ef8aff4 /main | |
parent | 6c0ddcda47732f559eac270daafbef94562db6b9 (diff) | |
download | php-git-0ea4013f101d64fbeb9221260b36e98f10ed1ddd.tar.gz |
Fixed bug #62596 add getallheaders (apache_request_headers) missing function in FPM add sapi_add_request_header in public API (was add_request_header) fix arginfo for fastcgi_finish_request fucntion
Diffstat (limited to 'main')
-rw-r--r-- | main/SAPI.c | 50 | ||||
-rw-r--r-- | main/SAPI.h | 1 |
2 files changed, 51 insertions, 0 deletions
diff --git a/main/SAPI.c b/main/SAPI.c index b6c3329d33..7e0c7c8a76 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -1109,6 +1109,56 @@ SAPI_API void sapi_terminate_process(void) { } } +SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) /* {{{ */ +{ + zval *return_value = (zval*)arg; + char *str = NULL; + + ALLOCA_FLAG(use_heap) + + if (var_len > 5 && + var[0] == 'H' && + var[1] == 'T' && + var[2] == 'T' && + var[3] == 'P' && + var[4] == '_') { + + char *p; + + var_len -= 5; + p = var + 5; + var = str = do_alloca(var_len + 1, use_heap); + *str++ = *p++; + while (*p) { + if (*p == '_') { + *str++ = '-'; + p++; + if (*p) { + *str++ = *p++; + } + } else if (*p >= 'A' && *p <= 'Z') { + *str++ = (*p++ - 'A' + 'a'); + } else { + *str++ = *p++; + } + } + *str = 0; + } else if (var_len == sizeof("CONTENT_TYPE")-1 && + memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) { + var = "Content-Type"; + } else if (var_len == sizeof("CONTENT_LENGTH")-1 && + memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) { + var = "Content-Length"; + } else { + return; + } + add_assoc_stringl_ex(return_value, var, var_len, val, val_len); + if (str) { + free_alloca(var, use_heap); + } +} +/* }}} */ + /* * Local variables: * tab-width: 4 diff --git a/main/SAPI.h b/main/SAPI.h index f829fd77ff..4b8e223ada 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -151,6 +151,7 @@ SAPI_API void sapi_shutdown(void); SAPI_API void sapi_activate(void); SAPI_API void sapi_deactivate(void); SAPI_API void sapi_initialize_empty_request(void); +SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg); END_EXTERN_C() /* |