]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1892915 from trunk:
authorYann Ylavic <ylavic@apache.org>
Mon, 6 Sep 2021 10:53:04 +0000 (10:53 +0000)
committerYann Ylavic <ylavic@apache.org>
Mon, 6 Sep 2021 10:53:04 +0000 (10:53 +0000)
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

changes-entries/Reduce_time_window_for_duplicate_in_uniqueid.txt [new file with mode: 0644]
modules/metadata/mod_unique_id.c

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 (file)
index 0000000..e8a8f9c
--- /dev/null
@@ -0,0 +1,3 @@
+  *) mod_unique_id: Reduce the time window where duplicates may be generated
+     PR 65159
+     [Christophe Jaillet]
index 4a92beaefb8e3cd90706989460019762381af031..a25ae3fc9b893307093ee5e3e0cba6ee586446a5 100644 (file)
@@ -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;
 }