>> =head1 Detecting a Client Abort
>>
>> # IsClientConnected? Might already be disconnected for busy
>> # site, if a user hits stop/reload
>>
>> my $conn = $r->connection;
>> my $is_connected = $conn->aborted ? 0 : 1;
>> if($is_connected) {
>> if (defined(my $fileno = $conn->fileno(0))) {
>> my $s = IO::Select->new($fileno);
>> $is_connected = $s->can_read(0) ? 0 : 1;
>> } else { $is_connected = 0 }
>> }
>>
>> You may also implement this without using the IO::Select module
>>
>> my $is_connected = 1;
>> my $conn = $r->connection;
>> # check Apache::Connection abort status
>> if($conn->aborted) { $is_connected = 0 }
>> else {
>> if (defined(my $fileno = $conn->fileno(0))) {
>> vec(my $rbit = '', $fileno, 1) = 1; # enable fd in vector table
>> select($rbit, undef, undef, 0); # select for readable handles
>> $is_connected = vec($rbit, $fileno, 1) ? 0 : 1; # check fd in
>> vector table
>> } else { $is_connected = 0 }
>> }
>
>
> looks good.
I think this is a more elegant solution
http://www.modperlcookbook.org/code/ch04/Cookbook/CheckConnection.pm
--Geoff