Accept connections and close connection hooks in custom module

Hi all,

I’m currently porting Apache module to nginx and need to have
preconnection and postconnection hook for custom code.
In apache it is ap_hook_pre_connection and apr_pool_cleanup_register
calls.

Is it possible in nginx?

Thanks in advance

Posted at Nginx Forum:

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.

Posted at Nginx Forum:

Hello!

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 D.

In fact I mostly need catch client deconnection. There is no good way
for
that as for accepted connection, isn’t it?

Posted at Nginx Forum:

Hello!

On Tue, Aug 21, 2012 at 10:46:32AM -0400, ConnorMcLaud wrote:

In fact I mostly need catch client deconnection. There is no good way for
that as for accepted connection, isn’t it?

Actually there is: add a cleanup handler for a connection pool.

Maxim D.