I was able to easily create a browser hang by configuring Mozilla to enable HTTP pipelining, then pointing my DocumentRoot at an old copy of the xml.apache.org web site which had tons of imbedded graphics. Thanks, Justin, for pointing out the bug.
I'm sure you *really* want to thank me for pointing this out. ;-)
The attached patch fixes it when there are no connection filters such as mod_ssl involved. When I switch to the version of the patch that does speculative reads, it behaves oddly. With pipelining, the last couple of .gifs aren't displayed until something times out. Without pipelining nearly all the .gifs are delayed. In gdb, it looks like it's not properly detecting when the input filters become empty. I'm going to investigate further but need to take care of some day job stuff first.
Okay. I'd be curious to figure out what's going on with the speculative non-blocking reads. I think that's the conceptually right solution (or as close as we can do today), but I'm almost positive there is going to be something that barf on it - so we'd have to fix some stuff. So, I'm not shocked that it doesn't quite work...
Paul, my apologies, this is against my version of the patch. I plan to switch over to yours after figuring out what's happening with the speculative reads.
I think Paul's already posted a patch that folds it in. But, it still uses EATCRLF.
Given the timeframe and the fact that my schedule just sucks for the next two weeks, is there enough interest (and presence) to discuss this at the Hackathon next weekend in LV? I bet if you throw enough of us together in a room, we could hammer something out that works... -- justin
