tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anton Tagunov <>
Subject Re: IE 6 causes broken pipe exception
Date Sat, 20 Sep 2003 18:07:17 GMT
Hello Chris!

CR> IE 6 is sending two GET requests for each .mp3 file. I haven't tested the
CR> behavior on IE 5.x or other plugin-handled mime types.

CR> The first GET sets the request header:

CR> user-agent = contype

CR> and is a Microsoft (ie, non-standard) attempt at data-sniffing intended to
CR> get just the header information. Tomcat 4.x starts sending the content data,
CR> but IE resets/drops the connection after 30-50k (100-500 ms), generating a
CR> "Broken pipe" exception.

CR> IE then sends a second request for the content using:

CR> user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

CR> which completes.

CR> [see Microsoft Knowledge Base Articles: KB 293792, KB 254337, KB 310388.
CR> Note: KB 310388 describes a fix for multiple posts in IE 6 SP1 (service pack
CR> 1). Tests from an IE 6 SP1 client however still demonstrate the multiple
CR> GETs.  

CR> I'm still trying to determine if the broken pipe GET is the cause of the
CR> unreliable caching behaving I'm seeing in IE 6 (symptom: IE 6 clients are
CR> downloading about 10x vs. Netscape/Safari clients; few if any 304
CR> responses). 

CR> -------

CR> So, two questions for the karmically kind:

CR> 1) Any bright ideas on a workaround for the user-agent: contype GET?

Yes, this can be handled by servicing your mp3 files via your own
servlet. I could check for the user-agent: contype and then probably
forwar the request or invoke RequestDispatcher. You may wrap the
original request in the wrapper provided by the Servlet 2.3 API
substituting the method GET with HEAD. (Do I remember it all

A more stratagic descision would be to build this into the Tomcat.
I've entered an enahncement request to Tomcat bug database
including your mail there. You may augment this enhancment
request at

CR> At
CR> present it's double-banging my server for 100-200k files. Is there a context
CR> level mechanism for filtering, ie, blocking, requests based on headers?

CR> 2) Is this more properly a development issue? I see workarounds in the
CR> 4.1.27 and 5.x source to ignore "Broken pipe" exceptions

This seems perfectly sane, the client may terminate connection for a
multitude of reasons.

CR> and the multiple GET is apparently  rooted in kludges from browser
CR> 4.x days --
Hmm, what did you mean, Chris?


View raw message