Preserve header count when a value is replaced

Fix for #217, a regression added in #205. The "header_count"
field was incremented even when we overwrote a header entry, which
caused Webdis to send a header with no name and no value.
master
Jessie Murray 3 years ago
parent 73f29055c1
commit 15302e754e
No known key found for this signature in database
GPG Key ID: E7E4D57EDDA744C5

@ -94,6 +94,7 @@ void
http_response_set_header(struct http_response *r, const char *k, const char *v, header_copy copy) {
int i, pos = r->header_count;
int replaced = 0; /* whether we overwrote a previous value */
size_t key_sz = strlen(k);
size_t val_sz = strlen(v);
@ -104,6 +105,7 @@ http_response_set_header(struct http_response *r, const char *k, const char *v,
/* free old value before replacing it. */
if(r->headers[i].copy & HEADER_COPY_KEY) free(r->headers[i].key);
if(r->headers[i].copy & HEADER_COPY_VALUE) free(r->headers[i].val);
replaced = 1;
break;
}
}
@ -116,7 +118,9 @@ http_response_set_header(struct http_response *r, const char *k, const char *v,
sizeof(struct http_header)*(r->headers_array_size + 1));
r->headers_array_size++;
}
r->header_count++;
if(!replaced) {
r->header_count++;
}
/* copy key if needed */
if(copy & HEADER_COPY_KEY) {

Loading…
Cancel
Save