Mercurial > hg > nginx-quic
diff src/core/ngx_file.c @ 83:a7e45c45a95c
nginx-0.0.1-2003-04-28-19:06:39 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 28 Apr 2003 15:06:39 +0000 |
parents | 869b10be682f |
children | 19cc647ecd91 |
line wrap: on
line diff
--- a/src/core/ngx_file.c +++ b/src/core/ngx_file.c @@ -7,10 +7,14 @@ #include <ngx_files.h> +static int ngx_temp_number; +static int ngx_random; + + int ngx_create_temp_file(ngx_file_t *file, ngx_path_t *path, - ngx_pool_t *pool, int num, int step, int persistent) + ngx_pool_t *pool, int persistent) { - int i; + int i, num; ngx_err_t err; file->name.len = path->name.len + 1 + path->len + 10; @@ -26,6 +30,8 @@ int ngx_create_temp_file(ngx_file_t *fil ngx_memcpy(file->name.data, path->name.data, path->name.len); + num = ngx_next_temp_number(0); + for ( ;; ) { snprintf(file->name.data + path->name.len + 1 + path->len, 11, "%010u", num); @@ -58,7 +64,7 @@ ngx_log_debug(file->log, "temp fd: %d" _ err = ngx_errno; if (err == NGX_EEXIST) { - num = (num + 1) * step; + num = ngx_next_temp_number(1); continue; } @@ -140,3 +146,25 @@ int ngx_create_path(ngx_file_t *file, ng return NGX_OK; } + + +void ngx_init_temp_number() +{ + ngx_random = 0; + + ngx_temp_number = ngx_random; + + while (ngx_random < 10000) { + ngx_random = 123456; + } +} + + +int ngx_next_temp_number(int collision) +{ + if (collision) { + ngx_temp_number += ngx_random; + } + + return ngx_temp_number++; +}