Commit b70c08d1 authored by Yann Ylavic's avatar Yann Ylavic
Browse files

Merge r981084 from trunk.

Update docs and comment: the unique id is now 24 characters, not 19

Submitted by: Takashi Sato <takashi lans-tv com>, Stefan Fritsch
PR: 36269

Committed by: sf
Reviewed by: jailletc36, ylavic, rjung
Backported by: ylavic


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1678709 13f79535-47bb-0310-9956-ffa450edef68
parent 3b668682
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -101,13 +101,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

   * mod_unique_id: Update docs and comment: the unique id is now 24 characters, not 19
     See explanation in:
        http://httpd.apache.org/docs/2.2/mod/mod_unique_id.html#comment_3564
     trunk patch: http://svn.apache.org/r981084
     2.2.x patch: trunks works
     +1 jailletc36, ylavic, rjung

   * mod_dav: Avoid some work that is unnecessary and often very time consuming.
     This helps mitigate Subversion issue #4531:
     http://subversion.tigris.org/issues/show_bug.cgi?id=4531
+10 −6
Original line number Diff line number Diff line
@@ -82,7 +82,10 @@ identifier for each request</description>
    <p>Given those assumptions, at a single point in time we can
    identify any httpd process on any machine in the cluster from
    all other httpd processes. The machine's IP address and the pid
    of the httpd process are sufficient to do this. So in order to
    of the httpd process are sufficient to do this. A httpd process
    can handle multiple requests simultaneously if you use a
    multi-threaded MPM. In order to identify threads, we use a thread
    index Apache httpd uses internally. So in order to
    generate unique identifiers for requests we need only
    distinguish between different points in time.</p>

@@ -152,11 +155,13 @@ identifier for each request</description>
    even still, if you're running NTP then your UTC time will be
    correct very shortly after reboot.</p>

    <!-- FIXME: thread_index is unsigned int, so not always 32bit.-->
    <p>The <code>UNIQUE_ID</code> environment variable is
    constructed by encoding the 112-bit (32-bit IP address, 32 bit
    pid, 32 bit time stamp, 16 bit counter) quadruple using the
    constructed by encoding the 144-bit (32-bit IP address, 32 bit
    pid, 32 bit time stamp, 16 bit counter, 32 bit thread index)
    quadruple using the
    alphabet <code>[A-Za-z0-9@-]</code> in a manner similar to MIME
    base64 encoding, producing 19 characters. The MIME base64
    base64 encoding, producing 24 characters. The MIME base64
    alphabet is actually <code>[A-Za-z0-9+/]</code> however
    <code>+</code> and <code>/</code> need to be specially encoded
    in URLs, which makes them less desirable. All values are
@@ -182,8 +187,7 @@ identifier for each request</description>
    issuing the new encodings.</p>

    <p>This we believe is a relatively portable solution to this
    problem. It can be extended to multithreaded systems like
    Windows NT, and can grow with future needs. The identifiers
    problem. The identifiers
    generated have essentially an infinite life-time because future
    identifiers can be made longer as required. Essentially no
    communication is required between machines in the cluster (only
+2 −2
Original line number Diff line number Diff line
@@ -79,8 +79,8 @@ typedef struct {
 * saving cpu cycles.  The counter is never reset, and is used to permit up to
 * 64k requests in a single second by a single child.
 *
 * The 112-bits of unique_id_rec are encoded using the alphabet
 * [A-Za-z0-9@-], resulting in 19 bytes of printable characters.  That is then
 * The 144-bits of unique_id_rec are encoded using the alphabet
 * [A-Za-z0-9@-], resulting in 24 bytes of printable characters.  That is then
 * stuffed into the environment variable UNIQUE_ID so that it is available to
 * other modules.  The alphabet choice differs from normal base64 encoding
 * [A-Za-z0-9+/] because + and / are special characters in URLs and we want to