Hi Patrick, On Tue, May 06, 2014 at 07:38:04PM -0400, Patrick Hemmer wrote: > *From: *Willy Tarreau <[email protected]> > *Sent: * 2014-05-06 17:41:18 E > *To: *Patrick Hemmer <[email protected]>, Rachel Chavez > <[email protected]> > *CC: *[email protected] > *Subject: *Re: please check > > > Hi Patrick, hi Rachel, > > > > I might have fixed half of the issue, I'd like you to test the attached > > patch. > > It ensures that the client-side timeout is only disabled after transmitting > > the whole body and not during the transmission. It will report "cD" in the > > flags, but does not affect the status code yet. It does not abort when the > > client timeout strikes, but still when the server timeout strikes, which is > > another tricky thing to do properly. That's why I would be happy if you > > could > > at least confirm that you correctly get cD or sH (or even sD) depending on > > who times out first. > > > > Thanks, > > Willy > > > So good news, bad news, and strange news. > > The good news: It is reporting "cD--" as it should > > The bad news: It's not reporting any return status at all. Before it > would log 504 and send a 504 response back. Now it logs "-1" and doesn't > send anything back. It's just closing the connection.
Till there that's expected since the timeout is not handled as an error in the forwarding path. That's why I said it should fix half of the issue. > The strange news: Contrary to your statement, the client connection is > closed after the 1 second timeout. It even logs this. The only thing > that doesn't happen properly is the absence of any response. Just > immediate connection close. > > > Before patch: > haproxy[26318]: 127.0.0.1:51995 [06/May/2014:18:55:33.002] f1 b1/s1 > 0/0/0/-1/2001 504 194 - - sH-- 0/0/0/0/0 0/0 "GET / HTTP/1.1" > > After patch: > haproxy[27216]: 127.0.0.1:52027 [06/May/2014:18:56:34.165] f1 b1/s1 > 0/0/0/-1/1002 -1 0 - - cD-- 0/0/0/0/0 0/0 "GET / HTTP/1.1" Interesting, for me it waited till the end. Or maybe you have "option abortonclose" ? Next step will be to assign status 408 and try to send the response back at this step but only if nothing was sent yet. Best regards, Willy

