Some users are experiencing problems with Rack::Lock and socket hijacking in combination with some servers, such as Phusion Passenger. They've noticed that when Rack::Lock is used in a request that hijacks the socket, the next request fails with "deadlock; recursive locking" inside Rack::Lock.

I've posted the results of my investigation here: https://github.com/ngauthier/tubesock/issues/10#issuecomment-72539461. But the bottom line is that different servers handle the response body object differently in the face of socket hijacking.

So I'd like to have clarification on the following question: are servers supposed to call #close on the body object or not, after the request as been hijacked? The way the specification is currently written is ambiguous. It seems to imply that servers must only call #close on the body object if the request was partially hijacked, but not when the request was fully hijacked.

--

---
You received this message because you are subscribed to the Google Groups "Rack Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rack-devel+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.