Here's what I'm trying to put in the bug report but bugzilla is acting
buggy:

The biggest problem here is that the abort handlers aren't being called. I 
think Henrik noted it. The transactionComplete() function can see there's an 
ABORT flag set on the StoreEntry and try to unwind things differently.

This stuff is a test. It seems to fix the problem Robert had by doing this:

[EMAIL PROTECTED]:~/work/squid3/src$ ../tools/squidclient -p 3128 -m HEAD 
ftp://ftp.easynet.be/ubuntu-iso/6.06/foo

What my stuff does is to forcibly call the abort handlers - which will unwind 
them top down. It kills the ftpstate, then it kills the forward state through 
the abort handler. This seems to DTRT in the error case.

What I _think_ transactionComplete() needs to do is check for the ABORT flag 
and if it finds it tell the forward layer that its hit an error condition. 
Right now it just treats it as valid - unregisters, closes ctrl.fd, then 
fwd->complete(). The 2.6 code didn't do it this way.

The patch: http://www.creative.net.au/diffs/ftpstate.diff




adrian

Reply via email to