Author: rjung
Date: Tue Oct 31 13:41:45 2006
New Revision: 469665

URL: http://svn.apache.org/viewvc?view=rev&rev=469665
Log:
Fix for BZ 40856:

When mapping URLs we use case sensitive comparisons since version 1.2.19.
Unfortunately when adding mappings, we only add an entry,
if there is no other entry with the same URL with case insensitive comparison.
So whenever multiple URLs are being mapped, which only differ by case,
we add onyl one mapping for the first of those URLs, but it's value will
be the worker for the last mapping.

This was the last remaining place, where we used case insensitive comparisons
on the key side of mappings. All other such comparisons are for values.
Since al jk_map_get methods were already case sensitive and we never
change the case when adding entries, it should be save to drop the case 
insensitive
key match when adding.

So now keys are always case sensitive, as a result, we shouldn't apply
the case mask when calculating the checksum.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_map.c

Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.c?view=diff&rev=469665&r1=469664&r2=469665
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_map.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_map.c Tue Oct 31 13:41:45 2006
@@ -36,17 +36,11 @@
 #define JK_MAP_REFERENCE    (".reference")
 #define JK_MAP_REFERENCE_SZ (strlen(JK_MAP_REFERENCE))
 
-#ifdef AS400
-#define CASE_MASK 0xbfbfbfbf
-#else
-#define CASE_MASK 0xdfdfdfdf
-#endif
-
 /* Compute the "checksum" for a key, consisting of the first
- * 4 bytes, normalized for case-insensitivity and packed into
- * an int...this checksum allows us to do a single integer
+ * 4 bytes, packed into an int.
+ * This checksum allows us to do a single integer
  * comparison as a fast check to determine whether we can
- * skip a strcasecmp
+ * skip a strcmp
  */
 #define COMPUTE_KEY_CHECKSUM(key, checksum)    \
 {                                              \
@@ -68,7 +62,6 @@
         c = (unsigned int)*++k;                \
         checksum |= c;                         \
     }                                          \
-    checksum &= CASE_MASK;                     \
 }
 
 struct jk_map
@@ -343,7 +336,7 @@
         unsigned int key;
         COMPUTE_KEY_CHECKSUM(name, key)
         for (i = 0; i < m->size; i++) {
-            if (m->keys[i] == key && strcasecmp(m->names[i], name) == 0) {
+            if (m->keys[i] == key && strcmp(m->names[i], name) == 0) {
                 break;
             }
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to