# HG changeset patch # User Igor Sysoev # Date 1199812189 0 # Node ID 6bbb9057ef16a575b55a9fa8af9441be8bdad592 # Parent 8f5745fe26361130506a28665a4f717275be8d7e r1652 merge: use usec and pid as start value diff --git a/src/http/modules/ngx_http_userid_filter_module.c b/src/http/modules/ngx_http_userid_filter_module.c --- a/src/http/modules/ngx_http_userid_filter_module.c +++ b/src/http/modules/ngx_http_userid_filter_module.c @@ -61,9 +61,11 @@ static char *ngx_http_userid_expires(ngx static char *ngx_http_userid_p3p(ngx_conf_t *cf, void *post, void *data); static char *ngx_http_userid_mark(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); +static ngx_int_t ngx_http_userid_init_worker(ngx_cycle_t *cycle); +static uint32_t start_value; static uint32_t sequencer_v1 = 1; static uint32_t sequencer_v2 = 0x03030302; @@ -173,7 +175,7 @@ ngx_module_t ngx_http_userid_filter_mod NGX_HTTP_MODULE, /* module type */ NULL, /* init master */ NULL, /* init module */ - NULL, /* init process */ + ngx_http_userid_init_worker, /* init process */ NULL, /* init thread */ NULL, /* exit thread */ NULL, /* exit process */ @@ -319,7 +321,7 @@ ngx_http_userid_set_uid(ngx_http_request ctx->uid_set[0] = conf->service; } ctx->uid_set[1] = ngx_time(); - ctx->uid_set[2] = ngx_pid; + ctx->uid_set[2] = start_value; ctx->uid_set[3] = sequencer_v1; sequencer_v1 += 0x100; @@ -346,7 +348,7 @@ ngx_http_userid_set_uid(ngx_http_request } ctx->uid_set[1] = htonl(ngx_time()); - ctx->uid_set[2] = htonl(ngx_pid); + ctx->uid_set[2] = htonl(start_value); ctx->uid_set[3] = htonl(sequencer_v2); sequencer_v2 += 0x100; if (sequencer_v2 < 0x03030302) { @@ -706,3 +708,18 @@ ngx_http_userid_mark(ngx_conf_t *cf, ngx return NGX_CONF_OK; } + + +static ngx_int_t +ngx_http_userid_init_worker(ngx_cycle_t *cycle) +{ + struct timeval tp; + + ngx_gettimeofday(&tp); + + /* use the most significant usec part that fits to 16 bits */ + start_value = ((tp.tv_usec / 20) << 16) | ngx_pid; + + return NGX_OK; +} +