fielding    99/02/06 03:00:18

  Modified:    src      CHANGES
               src/modules/standard mod_negotiation.c
  Log:
  Explain why we do not round the TCN quality calculation to 5 decimal places,
  unlike RFC 2296, because the calculation might need 12 decimal places
  to get the right result.
  
  Revision  Changes    Path
  1.1235    +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1234
  retrieving revision 1.1235
  diff -u -r1.1234 -r1.1235
  --- CHANGES   1999/02/06 09:58:02     1.1234
  +++ CHANGES   1999/02/06 11:00:09     1.1235
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.5
   
  +  *) Do not round the TCN quality calculation to 5 decimal places,
  +     unlike RFC 2296, because the calculation might need 12 decimal places
  +     to get the right result.  [Roy Fielding]
  +
     *) Remove unused code to disable transparent negotiation when
        negotiating on encoding only, as we now handle encoding too
        (though this is nonstandard for TCN), and fix bugs in debugging
  
  
  
  1.94      +8 -7      apache-1.3/src/modules/standard/mod_negotiation.c
  
  Index: mod_negotiation.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_negotiation.c,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- mod_negotiation.c 1999/02/06 09:58:04     1.93
  +++ mod_negotiation.c 1999/02/06 11:00:15     1.94
  @@ -1763,13 +1763,14 @@
           variant->charset_quality *
           variant->lang_quality;
   
  -   /* Make sure that variants with a very low nonzero q value
  -    * do not get rounded down to 0
  +   /* RFC 2296 calls for the result to be rounded to 5 decimal places,
  +    * but we don't do that because it serves no useful purpose other
  +    * than to ensure that a remote algorithm operates on the same
  +    * precision as ours.  That is silly, since what we obviously want
  +    * is for the algorithm to operate on the best available precision
  +    * regardless of who runs it.  Since the above calculation may
  +    * result in significant variance at 1e-12, rounding would be bogus.
       */
  -   if (q <= 0.0f)
  -       q = 0.0f; 
  -   else if (q < 0.00001f)
  -       q = 0.00001f; 
   
   #ifdef NEG_DEBUG
       fprintf(stderr, "Variant: file=%s type=%s lang=%s sourceq=%1.3f "
  @@ -1789,7 +1790,7 @@
               variant->definite);
   #endif
   
  -    if (q == 0.0f) {
  +    if (q <= 0.0f) {
           return 0;
       }
       if (q > bestq) {
  
  
  

Reply via email to