How to implement handshake in an upstream module?
mdounin at mdounin.ru
Wed Dec 4 22:38:35 UTC 2013
On Thu, Dec 05, 2013 at 02:39:28AM +0530, Reetesh Ranjan wrote:
> Before I send my main request and process the response through
> create_request and process_header (and filter) callbacks, I need
> to have a short handshake with the upstream servers. It consists
> of a send() and a recv() from the upstream module. How to
> implement this?
> Would the following sequence work?States: H = do-handshake
> (initial state), R = do-request1 In state H, send handshake
> req first through create_request()2 In process_header() in
> state == H 2.1 call 'create_request' again with state set
> to R, so main request gets created 2.2 call
> 'ngx_http_upstream_send_request' manually to restart the
> req-response cycle3 Because of 2.2 we get a process_header()
> call in state R
Obvious problem with the sequence:
ngx_http_upstream_send_request() is static functions, and can't be
called from a protocol module without modifications to
I don't think that handshake can be implemented without
modifications to upstream module. It's designed to implement
request/response logic and doesn't assume any handshakes.
More information about the nginx-devel