On Fri, Jul 29, 2011 at 02:35, Tony Abo <t...@hitech.com> wrote:
>> >>  I need to cut the processing short if the user decides to press the
>> >>stop button on the browser. I cant seem to figure out how to test for
>> >>that condition from inside the handler. Can anyone help me?
>> >>
>> >>
>> >> Thanks in advance,
>> >> Tony
>> >
>> > r->connection->aborted
>> >
>> > Cheers
>> >
>> > Tom
>> Thanks Tom
>>
>> Will that value get updated asynchronously if the connection closes
>> while my handler does its processing (I.e without calling any Apache
>> functions)?
>
> My testing shows that connection->aborted is not being set asynchronously 
> when the connection is closed by the client. I need one of the following:
>
> - Some Apache function I can call that will attempt to touch the open socket 
> and either set connection->aborted or return an error status so I can know it 
> is no longer connected.
>
> Or
>
> - Access to the actual socket buried somewhere in the connection structure. I 
> can't seem to find it. If I had that, I could test it myself.

The earliest hook that is passed the socket is create_connection. The
socket is passed in the third argument. Use apr_os_sock_get to get the
OS-specific socket descriptor.

If you do not place your own callback on the create_connection hook in
order to save the socket in your own structures, then you can use the
method below, but it's a hack, as I guess the core_module structure is
not supposed to be visible to modules. The method works after the
pre_connection hook.

#define CORE_PRIVATE 1
#include <http_core.h>
apr_socket_t *sock = (apr_socket_t
*)ap_get_module_config(r->connection->conn_config, &core_module);
apr_os_sock_t fd; // int for Unix
apr_os_sock_get(&fd, sock);
#undef CORE_PRIVATE


>
> Thanks again,
> Tony
>
>

Reply via email to