/* This function expects a *duplicated* string, that was previously emalloc()'d.
* Pointers sent to this functions will be automatically freed by the framework.
*/
-SAPI_API int sapi_add_header(char *header_line, uint header_line_len, zend_bool duplicate)
+SAPI_API int sapi_add_header_ex(char *header_line, uint header_line_len, zend_bool duplicate, zend_bool replace)
{
int retval, free_header = 0;
sapi_header_struct sapi_header;
sapi_header.header = header_line;
sapi_header.header_len = header_line_len;
+ sapi_header.replace = replace;
/* Check the header for a few cases that we have special support for in SAPI */
if (header_line_len>=5
typedef struct {
char *header;
uint header_len;
+ zend_bool replace;
} sapi_header_struct;
SAPI_API void sapi_deactivate(SLS_D);
SAPI_API void sapi_initialize_empty_request(SLS_D);
-SAPI_API int sapi_add_header(char *header_line, uint header_line_len, zend_bool duplicate);
+SAPI_API int sapi_add_header_ex(char *header_line, uint header_line_len, zend_bool duplicate, zend_bool replace);
+#define sapi_add_header(header_line, header_line_len, duplicate) \
+ sapi_add_header_ex((header_line), (header_line_len), (duplicate), 1)
SAPI_API int sapi_send_headers(void);
SAPI_API void sapi_free_header(sapi_header_struct *sapi_header);
SAPI_API void sapi_handle_post(void *arg SLS_DC);