Can I force Apache 2.2 connection close from inside a C module?

Posted by Amos Shapira on Stack Overflow See other posts from Stack Overflow or by Amos Shapira
Published on 2010-04-11T21:46:33Z Indexed on 2010/04/11 21:53 UTC
Read the original article Hit count: 313

Filed under:
|
|
|
|

Hello,

We'd like to have a more fine-grained control on the connections we serve in a C++ Apache 2.2 module (on CentOS 5).

One of the connections needs to stay alive for a few multiple requests, so we set "KeepAlive" to "On" and set a short keep-alive period.

But for every such connection we have a few more connections from the browser which we don't need to leave behind and instead want to force them to close after a single request.

Some of these connections are on different ports (so we can distinguish them by port, since KeepAlive can be set per virtual host) and some request a different URL (so we can tell from the path and parameters that we don't want to leave them behind).

Also for the one we do want to keep alive, we know that after a certain request we'd like to close it too.

But so far the only way we found to "cancel" the keep-alive is to send a polite "Connection: close" header to the client. If the client is not well behaved, or malicious, then they can keep it open and waste our resources.

Is there a way to tell Apache to close the connection from the server side? The documentation advises against just plain close(2) call on the socket since Apache needs to do some clean up before that's done. But is there some API or a trick to "override" the static "KeepAlive On" configuration dynamically (and convince Apache to call close(2))?

Thanks.

© Stack Overflow or respective owner

Related posts about apache

Related posts about module