Peculiar slow jpg download from website with adodb.stream over ssl on IE

From: DevelopIT (developit_at_nospam.nospam)
Date: 11/25/04


Date: Thu, 25 Nov 2004 12:13:01 +0100

Hi there,

I have run into a strange problem on a website (IIS on NT40sp6) I am
working on.

The site serves clients of a company with data.
All data on the site is accessed through ssl (https).
The problem is showing up in newer IE-clients (IE6-family) but a
betaversion of the mozilla-client did not have a problem.
Some of these data are jpg-files.
The jpg-files are accessed through a small vb-serverside-script.
The asp-script checks that the client are authorized to see the jpg-file
they are requesting and if authorized the script uses adodb.stream to read
the jpg-file into response.binarywrite.
The jpg-files are typically between 3 and 9 KBytes in size and are
typically shown 3-10 together on a webpage.
Up to 200 jpg-files are shown sometimes without performance problems. On a
2MBit wire it takes 2-5 seconds to download all.
So all in all the site is functioning well, but...

... one day a client complained about the site. It seemed like it froze
when it should show the jpg-files or at least it was extremely slow. I
found that a specific jpg-file was related to the problem.
If I tried to get only the specific jpg-file (around 8 KByte) through the
script it took up to several minutes before showing the file - but the
file showed eventually!
I also found that if I accessed the file directly (through an URL) instead
of through the script it only took a second.
If I accessed the site through http (as in no SSL) the script served the
file in a second. If I accessed the file directly (through an non SSL-URL)
it also only took a second.

The peculiar jpg-file can be opened in a number of different
picture-programs without any difficulties.
If I changed the file just a little (compression 76 instead of 75)
everything works as it should.

I have been able to reproduce the problem on two different servers on to
different locations and on several IE-clients on several locations.

Below I have pasted a simplified version of the script (it gets the
problematic jpg-file automatically):

** start script GetPic.asp **
 <%
 dim strFilePath
 dim stmData
 strFilePath = server.MapPath("/") & "\test\ie_ado_ssl_problem.jpg"
 set stmData = Server.CreateObject("ADODB.Stream")
 stmData.Open
 stmdata.Type = 1 'binary
 stmdata.LoadFromFile strFilePath
 Response.ContentType = "image/jpeg"
 Response.BinaryWrite stmData.Read
 stmData.Close
 set stmData = nothing
 Response.End
 %>
** End script **

So my guess is that the IE-client has a bug that only shows up when a
"strange" formatted jpg-file is requested through an asp-script - the
response.binarywrite(adodb.stream.read) part - on an SSL-encrypted
website.
Maybe it is the IIS-server that has a bug, but that does not seem logical
when the mozilla-client had no problems.
Maybe it is a combination of the IIS an IE-client, but I have not tried
other servers.

Does anyone know if this problem has been reported to Microsoft?

/Jens Ulrik