mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-24 13:42:16 +00:00
BUG/MEDIUM: unique_id: HTTP request counter must be unique!
The HTTP request counter is incremented non atomically, which means that many requests can log the same ID. Let's increment it when it is consumed so that we avoid this case. This bug was reported by Patrick Hemmer. It's 1.5-specific and does not need to be backported.
This commit is contained in:
parent
82ffa39bfd
commit
9f09521f2d
@ -90,7 +90,7 @@ struct global {
|
||||
int rlimit_memmax; /* default ulimit-d in megs value : 0=unset */
|
||||
long maxzlibmem; /* max RAM for zlib in bytes */
|
||||
int mode;
|
||||
unsigned int req_count; /* HTTP request counter */
|
||||
unsigned int req_count; /* HTTP request counter for logs and unique_id */
|
||||
int last_checks;
|
||||
int spread_checks;
|
||||
char *chroot;
|
||||
|
@ -1448,13 +1448,13 @@ int build_logline(struct session *s, char *dst, size_t maxsize, struct list *lis
|
||||
|
||||
case LOG_FMT_COUNTER: // %rt
|
||||
if (tmp->options & LOG_OPT_HEXA) {
|
||||
iret = snprintf(tmplog, dst + maxsize - tmplog, "%04X", global.req_count);
|
||||
iret = snprintf(tmplog, dst + maxsize - tmplog, "%04X", global.req_count++);
|
||||
if (iret < 0 || iret > dst + maxsize - tmplog)
|
||||
goto out;
|
||||
last_isspace = 0;
|
||||
tmplog += iret;
|
||||
} else {
|
||||
ret = ltoa_o(global.req_count, tmplog, dst + maxsize - tmplog);
|
||||
ret = ltoa_o(global.req_count++, tmplog, dst + maxsize - tmplog);
|
||||
if (ret == NULL)
|
||||
goto out;
|
||||
tmplog = ret;
|
||||
|
@ -8289,8 +8289,6 @@ void http_init_txn(struct session *s)
|
||||
txn->flags = 0;
|
||||
txn->status = -1;
|
||||
|
||||
global.req_count++;
|
||||
|
||||
txn->cookie_first_date = 0;
|
||||
txn->cookie_last_date = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user