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