[EMAIL PROTECTED] wrote:
> Hello,
>
> I have noticed a interesting thing. I am trying to close my connection to
> client but I am getting weird error.
don't do that.
>
> $r->internal_redirect("file");
> shutdown($r->connection->fileno, 1) || die "$!";
you should always return OK after calling internal_redirect(), not
continue processing.
> ......
> ......
> do_some_internal_processing()
> .....
> .....
if you have some long process you can move it to a PerlCleanupHandler
or something, but you're not buying yourself any advantage here at all
- the child process isn't free to serve another request until your
processing is complete, whether the client is connected or not.
>
> This code always die's with error "Bad file name".
> $r->connection->fileno is always '5' for this particular case.
>
> * CORE::shutdown, CORE::close, close, shutdown; all return same error.
> * ls -l /proc/$$/fd turns up the socket in the listing -- but it is owned by
> root - and I am not doing any setuid.
I suspect that this is because the Apache parent process is the owner
of it, but it's just a guess.
> Could someone please suggest to me how I should close my connection to the
> client from within mod_perl ?
don't. just let Apache handle the TCP stuff - Apache is pretty good
at it :)
if you're worried about performance, look into something like lingerd,
which offers some speedups wrt the closing of the connection.
HTH
--Geoff