How to implement handshake in an upstream module?

Reetesh Ranjan reeteshr at
Mon Jan 20 07:59:37 UTC 2014

This is about using keepalive.
As I worked on another nginx module, I saw more about 'keepalive'. I see how you have used 'keepalive=1' on 'length == 0' and similar stuff can be seen in memcached module as well. When I was doing the sphinx module I got away with working behavior with the default nginx unbuffered filter because the sphinx service closed the socket after the response and I did not have to play with upstream in_headers to say how much is remaining to read. So it seems if I had to get the advantage of 'keepalive', I need to modify the sphinx service behavior. :-(


From: reeteshr at
To: nginx-devel at
Subject: RE: How to implement handshake in an upstream module?
Date: Fri, 6 Dec 2013 11:56:41 +0530

> Date: Thu, 5 Dec 2013 13:23:55 -0800
> Subject: Re: How to implement handshake in an upstream module?
> From: agentzh at
> To: nginx-devel at
> You're essentially doing pipelined requests here and you will run into
> the following limitation in the nginx core:
> I ran into this when testing my ngx_redis2 module's pipelined request
> feature and my patch in that thread will help you :)
Thanks for the info. :)
> Also, you may also want to deal with keepalive connections in your
> module in the future and you will want to save the handshake for
> reused connections (from the connection pool).
Yeah, this is on the table for obvious performance reasons. I saw how you have put that upfront for redis, and that is really good. :)
> Regards,
> -agentzh
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at

nginx-devel mailing list
nginx-devel at 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx-devel mailing list