Skip to content

Commit 2c0fb89

Browse files
committed
Restore the optimization removing session cookies had
I don't think this needs to be special cased with the parameter.
1 parent 251542b commit 2c0fb89

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

main/SAPI.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -597,17 +597,23 @@ static void sapi_update_response_code(int ncode)
597597
* since zend_llist_del_element only removes one matched item once,
598598
* we should remove them manually
599599
*/
600-
static void sapi_remove_header(zend_llist *l, char *name, size_t len, bool check_separator)
600+
static void sapi_remove_header(zend_llist *l, char *name, size_t len)
601601
{
602602
sapi_header_struct *header;
603603
zend_llist_element *next;
604604
zend_llist_element *current=l->head;
605605

606+
size_t header_len = len;
607+
const char *colon = strchr(name, ':');
608+
if (colon) {
609+
header_len = (size_t)(colon - name);
610+
}
611+
606612
while (current) {
607613
header = (sapi_header_struct *)(current->data);
608614
next = current->next;
609-
if (header->header_len > len
610-
&& (header->header[len] == ':' || !check_separator)
615+
if (header->header_len > header_len
616+
&& (header->header[header_len] == ':' || len > header_len)
611617
&& !strncasecmp(header->header, name, len)) {
612618
if (current->prev) {
613619
current->prev->next = next;
@@ -655,7 +661,7 @@ static void sapi_header_add_op(sapi_header_op_enum op, sapi_header_struct *sapi_
655661
char sav = *colon_offset;
656662

657663
*colon_offset = 0;
658-
sapi_remove_header(&SG(sapi_headers).headers, sapi_header->header, strlen(sapi_header->header), true);
664+
sapi_remove_header(&SG(sapi_headers).headers, sapi_header->header, strlen(sapi_header->header));
659665
*colon_offset = sav;
660666
}
661667
}
@@ -736,7 +742,7 @@ SAPI_API int sapi_header_op(sapi_header_op_enum op, void *arg)
736742
sapi_header.header_len = header_line_len;
737743
sapi_module.header_handler(&sapi_header, op, &SG(sapi_headers));
738744
}
739-
sapi_remove_header(&SG(sapi_headers).headers, header_line, header_line_len, op == SAPI_HEADER_DELETE);
745+
sapi_remove_header(&SG(sapi_headers).headers, header_line, header_line_len);
740746
efree(header_line);
741747
return SUCCESS;
742748
} else {

0 commit comments

Comments
 (0)