BUG/MINOR: http: fix incorrect header value offset in replace-hdr/replace-value

The two http-req/http-resp actions "replace-hdr" and "replace-value" were
expecting exactly one space after the colon, which is wrong. It was causing
the first char not to be seen/modified when no space was present, and empty
headers not to be modified either. Instead of using name->len+2, we must use
ctx->val which points to the first character of the value even if there is
no value.

This fix must be backported into 1.5.
This commit is contained in:
Willy Tarreau 2015-01-29 14:01:34 +01:00
parent 474b96ad41
commit aa435e7d7e

View File

@ -3250,7 +3250,7 @@ static int http_transform_header(struct session* s, struct http_msg *msg, const
while (http_find_full_header2(name, name_len, buf, idx, ctx)) { while (http_find_full_header2(name, name_len, buf, idx, ctx)) {
struct hdr_idx_elem *hdr = idx->v + ctx->idx; struct hdr_idx_elem *hdr = idx->v + ctx->idx;
int delta; int delta;
char* val = (char*)ctx->line + name_len + 2; char* val = (char*)ctx->line + ctx->val;
char* val_end = (char*)ctx->line + hdr->len; char* val_end = (char*)ctx->line + hdr->len;
char* reg_dst_buf; char* reg_dst_buf;
uint reg_dst_buf_size; uint reg_dst_buf_size;