Hi,

I meant making it non-static and using. This might be the modification we need to the upstream module, rather than introducing a 'handshake' handler formally. Was looking to see if there are any 'state machine' related catches in doing so.

Thanks,
Reetesh

> Date: Thu, 5 Dec 2013 02:38:35 +0400
> From: mdounin@mdounin.ru
> To: nginx-devel@nginx.org
> Subject: Re: How to implement handshake in an upstream module?
>
> Hello!
>
> 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
> > Regards,Reetesh
>
> 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
> ngx_http_upstream.c.
>
> 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.
>
> --
> Maxim Dounin
> http://nginx.org/en/donation.html
>
> _______________________________________________
> nginx-devel mailing list
> nginx-devel@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel