How to implement handshake in an upstream module?

Reetesh Ranjan reeteshr at outlook.com
Thu Dec 5 03:23:44 UTC 2013


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 at mdounin.ru
> To: nginx-devel at 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 at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20131205/c7771bca/attachment.html>


More information about the nginx-devel mailing list