BUG/MINOR: sample: Make sure to return stable IDs in the unique-id fetch
Previously when the `unique-id-format` contained non-deterministic parts,
such as the `uuid` fetch each use of the `unique-id` fetch would generate
a new unique ID, replacing the old one. The following configuration shows
the error:
global
log stdout format short daemon
listen test
log global
log-format "%ID"
unique-id-format %{+X}o\ TEST-%[uuid]
mode http
bind *:8080
http-response set-header A %[unique-id]
http-response set-header B %[unique-id]
server example example.com:80
Without the patch the contents of the `A` and `B` response header would
differ.
This bug was introduced in commit f4011ddcf5
,
which was first released with HAProxy 1.7-dev3.
This fix should be backported to HAProxy 1.7+.
This commit is contained in:
parent
55c5399846
commit
530408f976
|
@ -416,10 +416,10 @@ static int smp_fetch_uniqueid(const struct arg *args, struct sample *smp, const
|
||||||
if ((smp->strm->unique_id = pool_alloc(pool_head_uniqueid)) == NULL)
|
if ((smp->strm->unique_id = pool_alloc(pool_head_uniqueid)) == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
smp->strm->unique_id[0] = '\0';
|
smp->strm->unique_id[0] = '\0';
|
||||||
}
|
build_logline(smp->strm, smp->strm->unique_id,
|
||||||
smp->data.u.str.data = build_logline(smp->strm, smp->strm->unique_id,
|
|
||||||
UNIQUEID_LEN, &smp->sess->fe->format_unique_id);
|
UNIQUEID_LEN, &smp->sess->fe->format_unique_id);
|
||||||
|
}
|
||||||
|
smp->data.u.str.data = strlen(smp->strm->unique_id);
|
||||||
smp->data.type = SMP_T_STR;
|
smp->data.type = SMP_T_STR;
|
||||||
smp->data.u.str.area = smp->strm->unique_id;
|
smp->data.u.str.area = smp->strm->unique_id;
|
||||||
smp->flags = SMP_F_CONST;
|
smp->flags = SMP_F_CONST;
|
||||||
|
|
Loading…
Reference in New Issue