From 1e939238745cc5514dd235e9bcf552bf1bccfe0c Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Mon, 6 Sep 2021 10:53:04 +0000 Subject: [PATCH] Merge r1892915 from trunk: Reduce the time window where duplicates may be generated by mod_uniqueid Submitted by: jailletc36 Reviewed by: jailletc36, jorton, icing git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1892982 13f79535-47bb-0310-9956-ffa450edef68 --- ...Reduce_time_window_for_duplicate_in_uniqueid.txt | 3 +++ modules/metadata/mod_unique_id.c | 13 ++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 changes-entries/Reduce_time_window_for_duplicate_in_uniqueid.txt diff --git a/changes-entries/Reduce_time_window_for_duplicate_in_uniqueid.txt b/changes-entries/Reduce_time_window_for_duplicate_in_uniqueid.txt new file mode 100644 index 00000000000..e8a8f9c0334 --- /dev/null +++ b/changes-entries/Reduce_time_window_for_duplicate_in_uniqueid.txt @@ -0,0 +1,3 @@ + *) mod_unique_id: Reduce the time window where duplicates may be generated + PR 65159 + [Christophe Jaillet] diff --git a/modules/metadata/mod_unique_id.c b/modules/metadata/mod_unique_id.c index 4a92beaefb8..a25ae3fc9b8 100644 --- a/modules/metadata/mod_unique_id.c +++ b/modules/metadata/mod_unique_id.c @@ -186,7 +186,7 @@ static const char *gen_unique_id(const request_rec *r) { char *str; /* - * Buffer padded with two final bytes, used to copy the unique_id_red + * Buffer padded with two final bytes, used to copy the unique_id_rec * structure without the internal paddings that it could have. */ unique_id_rec new_unique_id; @@ -199,9 +199,13 @@ static const char *gen_unique_id(const request_rec *r) int i,j,k; memcpy(&new_unique_id.root, &cur_unique_id.root, ROOT_SIZE); - new_unique_id.counter = cur_unique_id.counter; new_unique_id.stamp = htonl((unsigned int)apr_time_sec(r->request_time)); new_unique_id.thread_index = htonl((unsigned int)r->connection->id); + new_unique_id.counter = cur_unique_id.counter; + + /* Increment the identifier for the next call */ + counter = ntohs(new_unique_id.counter) + 1; + cur_unique_id.counter = htons(counter); /* we'll use a temporal buffer to avoid uuencoding the possible internal * paddings of the original structure */ @@ -233,11 +237,6 @@ static const char *gen_unique_id(const request_rec *r) } str[k++] = '\0'; - /* and increment the identifier for the next call */ - - counter = ntohs(new_unique_id.counter) + 1; - cur_unique_id.counter = htons(counter); - return str; } -- 2.47.2