You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by BugRat Mail System <to...@cortexity.com> on 2000/10/09 18:28:46 UTC

BugRat Report #236 has been filed.

Bug report #236 has just been filed.

You can view the report at the following URL:

   <http://znutar.cortexity.com:8888/BugRatViewer/ShowReport/236>

REPORT #236 Details.

Project: Tomcat
Category: Bug Report
SubCategory: New Bug Report
Class: swbug
State: received
Priority: medium
Severity: serious
Confidence: public
Environment: 
   Release: Tomcat 3.2 beta 4
   JVM Release: java version "1.2.2" Classic VM (build JDK-1.2.2-001, native threads, symcjit)
   Operating System: WinNT
   OS Release: 4.0SP6
   Platform: ia32

Synopsis: 
Multiple HTTP message-header fields with the same field-name show up only one in the ServletRequest

Description:
The following HTTP Request:
2000-10-10 15:29:30 [11] DEBUG:   data: 47 45 54 20 2f 77 70 73   GET /wps
2000-10-10 15:29:30 [11] DEBUG:   data: 2f 20 48 54 54 50 2f 31   / HTTP/1
2000-10-10 15:29:30 [11] DEBUG:   data: 2e 31 0d 0a 48 6f 73 74   .1..Host
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 6a 70 6f 3a 38 30   : jpo:80
2000-10-10 15:29:30 [11] DEBUG:   data: 38 31 0d 0a 41 63 63 65   81..Acce
2000-10-10 15:29:30 [11] DEBUG:   data: 70 74 2d 43 68 61 72 73   pt-Chars
2000-10-10 15:29:30 [11] DEBUG:   data: 65 74 3a 20 75 74 66 2d   et: utf-
2000-10-10 15:29:30 [11] DEBUG:   data: 38 0d 0a 41 63 63 65 70   8..Accep
2000-10-10 15:29:30 [11] DEBUG:   data: 74 2d 43 68 61 72 73 65   t-Charse
2000-10-10 15:29:30 [11] DEBUG:   data: 74 3a 20 69 73 6f 2d 38   t: iso-8
2000-10-10 15:29:30 [11] DEBUG:   data: 38 35 39 2d 31 0d 0a 41   859-1..A
2000-10-10 15:29:30 [11] DEBUG:   data: 63 63 65 70 74 2d 43 68   ccept-Ch
2000-10-10 15:29:30 [11] DEBUG:   data: 61 72 73 65 74 3a 20 69   arset: i
2000-10-10 15:29:30 [11] DEBUG:   data: 73 6f 2d 31 30 36 34 36   so-10646
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 75 63 73 2d 32 0d 0a   -ucs-2..
2000-10-10 15:29:30 [11] DEBUG:   data: 41 63 63 65 70 74 3a 20   Accept: 
2000-10-10 15:29:30 [11] DEBUG:   data: 61 70 70 6c 69 63 61 74   applicat
2000-10-10 15:29:30 [11] DEBUG:   data: 69 6f 6e 2f 76 6e 64 2e   ion/vnd.
2000-10-10 15:29:30 [11] DEBUG:   data: 77 61 70 2e 77 6d 6c 63   wap.wmlc
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 61 70 70 6c 69 63   : applic
2000-10-10 15:29:30 [11] DEBUG:   data: 61 74 69 6f 6e 2f 76 6e   ation/vn
2000-10-10 15:29:30 [11] DEBUG:   data: 64 2e 77 61 70 2e 77 6d   d.wap.wm
2000-10-10 15:29:30 [11] DEBUG:   data: 6c 73 63 72 69 70 74 63   lscriptc
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 69 6d 61 67 65 2f   : image/
2000-10-10 15:29:30 [11] DEBUG:   data: 76 6e 64 2e 77 61 70 2e   vnd.wap.
2000-10-10 15:29:30 [11] DEBUG:   data: 77 62 6d 70 0d 0a 41 63   wbmp..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 3a 20 69 6d   cept: im
2000-10-10 15:29:30 [11] DEBUG:   data: 61 67 65 2f 67 69 66 0d   age/gif.
2000-10-10 15:29:30 [11] DEBUG:   data: 0a 55 73 65 72 2d 41 67   .User-Ag
2000-10-10 15:29:30 [11] DEBUG:   data: 65 6e 74 3a 20 4e 6f 6b   ent: Nok
2000-10-10 15:29:30 [11] DEBUG:   data: 69 61 2d 57 41 50 2d 54   ia-WAP-T
2000-10-10 15:29:30 [11] DEBUG:   data: 6f 6f 6c 6b 69 74 2f 31   oolkit/1
2000-10-10 15:29:30 [11] DEBUG:   data: 2e 32 0d 0a 41 63 63 65   .2..Acce
2000-10-10 15:29:30 [11] DEBUG:   data: 70 74 3a 20 74 65 78 74   pt: text
2000-10-10 15:29:30 [11] DEBUG:   data: 2f 76 6e 64 2e 77 61 70   /vnd.wap
2000-10-10 15:29:30 [11] DEBUG:   data: 2e 77 6d 6c 0d 0a 41 63   .wml..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 3a 20 74 65   cept: te
2000-10-10 15:29:30 [11] DEBUG:   data: 78 74 2f 76 6e 64 2e 77   xt/vnd.w
2000-10-10 15:29:30 [11] DEBUG:   data: 61 70 2e 77 6d 6c 73 63   ap.wmlsc
2000-10-10 15:29:30 [11] DEBUG:   data: 72 69 70 74 0d 0a 41 63   ript..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 2d 43 68 61   cept-Cha
2000-10-10 15:29:30 [11] DEBUG:   data: 72 73 65 74 3a 20 49 53   rset: IS
2000-10-10 15:29:30 [11] DEBUG:   data: 4f 2d 38 38 35 39 2d 32   O-8859-2
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 43 68 61 72 73 65 74   -Charset
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 49 53 4f 2d 38 38   : ISO-88
2000-10-10 15:29:30 [11] DEBUG:   data: 35 39 2d 33 0d 0a 41 63   59-3..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 2d 43 68 61   cept-Cha
2000-10-10 15:29:30 [11] DEBUG:   data: 72 73 65 74 3a 20 49 53   rset: IS
2000-10-10 15:29:30 [11] DEBUG:   data: 4f 2d 38 38 35 39 2d 34   O-8859-4
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 43 68 61 72 73 65 74   -Charset
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 49 53 4f 2d 38 38   : ISO-88
2000-10-10 15:29:30 [11] DEBUG:   data: 35 39 2d 35 0d 0a 41 63   59-5..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 2d 43 68 61   cept-Cha
2000-10-10 15:29:30 [11] DEBUG:   data: 72 73 65 74 3a 20 49 53   rset: IS
2000-10-10 15:29:30 [11] DEBUG:   data: 4f 2d 38 38 35 39 2d 36   O-8859-6
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 43 68 61 72 73 65 74   -Charset
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 49 53 4f 2d 38 38   : ISO-88
2000-10-10 15:29:30 [11] DEBUG:   data: 35 39 2d 37 0d 0a 41 63   59-7..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 2d 43 68 61   cept-Cha
2000-10-10 15:29:30 [11] DEBUG:   data: 72 73 65 74 3a 20 49 53   rset: IS
2000-10-10 15:29:30 [11] DEBUG:   data: 4f 2d 38 38 35 39 2d 38   O-8859-8
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 43 68 61 72 73 65 74   -Charset
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 49 53 4f 2d 38 38   : ISO-88
2000-10-10 15:29:30 [11] DEBUG:   data: 35 39 2d 39 0d 0a 41 63   59-9..Ac
2000-10-10 15:29:30 [11] DEBUG:   data: 63 65 70 74 2d 43 68 61   cept-Cha
2000-10-10 15:29:30 [11] DEBUG:   data: 72 73 65 74 3a 20 57 49   rset: WI
2000-10-10 15:29:30 [11] DEBUG:   data: 4e 44 4f 57 53 2d 31 32   NDOWS-12
2000-10-10 15:29:30 [11] DEBUG:   data: 35 31 0d 0a 41 63 63 65   51..Acce
2000-10-10 15:29:30 [11] DEBUG:   data: 70 74 2d 43 68 61 72 73   pt-Chars
2000-10-10 15:29:30 [11] DEBUG:   data: 65 74 3a 20 57 49 4e 44   et: WIND
2000-10-10 15:29:30 [11] DEBUG:   data: 4f 57 53 2d 31 32 35 33   OWS-1253
2000-10-10 15:29:30 [11] DEBUG:   data: 0d 0a 41 63 63 65 70 74   ..Accept
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 43 68 61 72 73 65 74   -Charset
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 57 49 4e 44 4f 57   : WINDOW
2000-10-10 15:29:30 [11] DEBUG:   data: 53 2d 31 32 35 37 0d 0a   S-1257..
2000-10-10 15:29:30 [11] DEBUG:   data: 41 63 63 65 70 74 2d 43   Accept-C
2000-10-10 15:29:30 [11] DEBUG:   data: 68 61 72 73 65 74 3a 20   harset: 
2000-10-10 15:29:30 [11] DEBUG:   data: 4b 4f 49 38 2d 52 0d 0a   KOI8-R..
2000-10-10 15:29:30 [11] DEBUG:   data: 58 5f 4e 65 74 77 6f 72   X_Networ
2000-10-10 15:29:30 [11] DEBUG:   data: 6b 5f 49 6e 66 6f 3a 20   k_Info: 
2000-10-10 15:29:30 [11] DEBUG:   data: 31 37 32 2e 32 30 2e 32   172.20.2
2000-10-10 15:29:30 [11] DEBUG:   data: 34 32 2e 32 37 0d 0a 58   42.27..X
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 57 41 50 2d 43 6c 69   -WAP-Cli
2000-10-10 15:29:30 [11] DEBUG:   data: 65 6e 74 2d 53 44 55 2d   ent-SDU-
2000-10-10 15:29:30 [11] DEBUG:   data: 53 69 7a 65 3a 20 36 35   Size: 65
2000-10-10 15:29:30 [11] DEBUG:   data: 35 33 35 0d 0a 56 69 61   535..Via
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 57 41 50 2f 31 2e   : WAP/1.
2000-10-10 15:29:30 [11] DEBUG:   data: 31 20 77 70 73 73 65 72   1 wpsser
2000-10-10 15:29:30 [11] DEBUG:   data: 76 31 2e 63 6f 6e 64 61   v1.conda
2000-10-10 15:29:30 [11] DEBUG:   data: 74 2e 64 65 20 28 4b 61   t.de (Ka
2000-10-10 15:29:30 [11] DEBUG:   data: 6e 6e 65 6c 2f 63 76 73   nnel/cvs
2000-10-10 15:29:30 [11] DEBUG:   data: 29 0d 0a 58 2d 57 41 50   )..X-WAP
2000-10-10 15:29:30 [11] DEBUG:   data: 2d 47 61 74 65 77 61 79   -Gateway
2000-10-10 15:29:30 [11] DEBUG:   data: 3a 20 4b 61 6e 6e 65 6c   : Kannel
2000-10-10 15:29:30 [11] DEBUG:   data: 2f 63 76 73 0d 0a 58 2d   /cvs..X-
2000-10-10 15:29:30 [11] DEBUG:   data: 57 41 50 2d 53 65 73 73   WAP-Sess
2000-10-10 15:29:30 [11] DEBUG:   data: 69 6f 6e 2d 49 44 3a 20   ion-ID: 
2000-10-10 15:29:30 [11] DEBUG:   data: 32 0d 0a 0d 0a            2....

generates the following HttpServletRequest:
<09.10.2000 18:38:58:747><DEBUG><de.condat.wps.request.WPSServletRequest><Header <User-Agent> : <Nokia-WAP-Toolkit/1.2>>
<09.10.2000 18:38:58:757><DEBUG><de.condat.wps.request.WPSServletRequest><Header <Accept-Charset> : <utf-8>>
<09.10.2000 18:38:58:757><DEBUG><de.condat.wps.request.WPSServletRequest><Header <Host> : <jpo:8081>>
<09.10.2000 18:38:58:767><DEBUG><de.condat.wps.request.WPSServletRequest><Header <X_Network_Info> : <172.20.242.27>>
<09.10.2000 18:38:58:767><DEBUG><de.condat.wps.request.WPSServletRequest><Header <Via> : <WAP/1.1 wpsserv1.condat.de (Kannel/cvs)>>
<09.10.2000 18:38:58:777><DEBUG><de.condat.wps.request.WPSServletRequest><Header <X-WAP-Gateway> : <Kannel/cvs>>
<09.10.2000 18:38:58:777><DEBUG><de.condat.wps.request.WPSServletRequest><Header <Accept> : <application/vnd.wap.wmlc>>
<09.10.2000 18:38:58:777><DEBUG><de.condat.wps.request.WPSServletRequest><Header <X-WAP-Client-SDU-Size> : <65535>>
<09.10.2000 18:38:58:787><DEBUG><de.condat.wps.request.WPSServletRequest><Header <X-WAP-Session-ID> : <4>>

Java code:
	for (enum = theServletRequest.getHeaderNames(); enum.hasMoreElements() ;) {
	    String header = (String)(enum.nextElement());
	    String value = theServletRequest.getHeader(header);
	    Logger.debug (this, "Header <" + header + "> : <" + value + ">");
	}

The problem is obvious: only the first occurence of multiple
message headers with the same field name can be accessed.
RFC2616, page 22 states:

Multiple message-header fields with the same field-name MAY be present in a message if and only if the entire
field-value for that header field is defined as a comma-separated list [i.e., #(values)].

This is certainly true for the Accept and Accept-Charset
header fields (see RFC2616, page 62/63).