Actually this PR is not a mod_cache bug. According to RFC 2616, LWS might be present at the end of an HTTP header.
Quote from RFC 2616: implied *LWS The grammar described by this specification is word-based. Except where noted otherwise, linear white space (LWS) can be included between any two adjacent words (token or quoted-string), and between adjacent words and separators, without changing the interpretation of a field. At least one delimiter (LWS and/or separators) MUST exist between any two tokens (for the definition of "token" below), since they would otherwise be interpreted as a single token.
So, as PR 16520 states:
Authorization : scheme scheme param=value
is a valid header and should be treated as
Authorization: scheme scheme param=value
Currently Apache does not strip any trailing LWS from the header name. The attached patch resolves this problem.
--
Index: server/protocol.c =================================================================== RCS file: /home/cvspublic/httpd-2.0/server/protocol.c,v retrieving revision 1.131 diff -u -r1.131 protocol.c --- server/protocol.c 15 Apr 2003 22:47:57 -0000 1.131 +++ server/protocol.c 9 Jun 2003 14:33:42 -0000 @@ -702,7 +702,7 @@ apr_size_t last_len = 0; apr_size_t alloc_len = 0; char *field; - char *value; + char *value, *p; apr_size_t len; int fields_read = 0; apr_table_t *tmp_headers; @@ -790,7 +790,12 @@ return; } - *value = '\0'; + p = value - 1; + while ((last_field < p) && (*p == ' ' || *p == '\t')) { + --p; /* Skip to end of name */ + } + *(p+1) = '\0'; + ++value; while (*value == ' ' || *value == '\t') { ++value; /* Skip to start of value */