Accept connections and close connection hooks in custom module

Maxim Dounin mdounin at
Tue Aug 21 12:30:16 UTC 2012


On Mon, Aug 20, 2012 at 06:25:09AM -0400, ConnorMcLaud wrote:

> I think I've finally understood. There is global structure ngx_event_actions
> with add_conn/del_conn handlers which supposed to do what I want. There is
> only one issue (probably a bug) with add_conn handler. In version 1.2.2 with
> epoll usage handler add_conn never called. You should use add handler
> instead and check incoming parameters (event = NGX_READ_EVENT, flags =
> NGX_CLEAR_REQUEST). Hope it helps someone.

The add_conn/del_conn handlers isn't what you want to touch from 
your module, it's handlers for event modules to register 
connections in an event handling machinery.  These hooks are 
called not only for client connections, but e.g. for nginx own 
internal connections as well, and for listening sockets also.

Moreover, nginx core is aware of aspects of various event methods 
supported and might not call add_conn/del_conn even if the are 
set.  The issue with epoll you've hit is just one of the cases.

Right now there is no good way to hook new accepted connections 
unless you are writing your own core module which creates 
listening sockets by itself.  Most recent point for correct hooks 
available as of now for http modules is NGX_HTTP_POST_READ_PHASE.

Maxim Dounin

More information about the nginx mailing list