From: Gustaf N. <ne...@wu...> - 2017-04-02 11:00:31
|
Just to be sure: timeouts during connection creation work fine, but read timeouts from the back-end lead to the problem. ... and this happened with an https backend. And you are experiencing this under Linux. Did i understand this correctly? actually, ns_connchan has no own timeout semantics, but relies on the Ns_SockCallback* infrastructure. In general, the Tcl callback can signal with a result "0", that the current connection channel should be closed automatically. -g Am 31.03.17 um 16:47 schrieb David Osborne: > Hi, > > I've been trying to get revproxy to work with a timeout. So if the > backend doesn't reply within $timeout secs, then the connection is closed. > > What I thought we could do was set a timeout when creating the > callback to call backendReply. > Then when the callback is triggered with $when eq "t" we could return > a 504 then close the connection. > > This is an outline if what I am trying: > https://bitbucket.org/davidqc/revproxy/commits/658704673bcb07d27962a9b4d4a89a07a64c5843 > > This appears to work initally. When accessing a backend page which > takes over 10 seconds to respond, the client gets a 504. > But it appears that things aren't cleaned up properly and the 2 socket > callbacks persist after the timeout. > > Inline images 2 > > This has the effect that the proxy is essentially unresponsive and > doesn't forward any more requests (even the Control Ports are not > accessible locally). > If I restart the backend server, that brings the proxy back to life. > The proxy and the backend are running on different ports on the same > server in this case. > > Should this approach work or have I misunderstood how ns_connchan > timeouts should work? > > Thanks, > -- > David |