I've run into a strange bug that I haven't been able to track down yet.
It involves uploading a file over the Web. Most of the time it works fine,
but every once in awhile it will fail. As best I can tell, the browser
isn't actually sending the data, so the server eventually gives up and
returns an error message. Here's the weird part:
- It only happens with Safari (both 3.x and the 4.0 beta), not Firefox
- It only happens on Mac OS X (both Tiger and Leopard), not Windows
- It only happens with HTTPS, not HTTP
- It only happens with Apache 2.2, not 1.3 (I haven't tested 2.0)
- It only happens about 10% of the time, randomly
On the client side, it just sits there for a few minutes, then displays
500 Internal Server Error . The error messages logged on the
server are:
End of file found: Error reading request entity data
The timeout specified has expired: Error reading request entity data
I've reported the issue to Apple (Radar bug
6841997) and they're looking into it,
but so far it doesn't sound like much progress has been made. The fact that
the behavior is different depending on whether the server is Apache 1.3 or
Apache 2.2 makes it seem like this couldn't be a browser problem, but on
the other hand the fact that Firefox works fine suggests that it can't be
a server problem either.
The WebKit folks are pointing at CFNetwork, the Mac OS X Cocoa framework
that Safari uses to handle HTTP and HTTPS transactions. Safari for Windows
uses a port of CFNetwork as well (bundled with the application), but apparently
the Windows version doesn't have this issue.
Has anyone run into anything like this before? I have test cases if you're
interested in troubleshooting.
|