Re: Problems closing connections in a SUSPENDED test case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks a lot!

I've made a hack which puts the suspeded connection back in the queue:
https://gist.github.com/ArtemGr/9887564
with that the test case works! (`ab` no longer timeouts).

Would it make sense to submit a feature request along these lines?
Should I make a patch or leave it to the more experienced Apache developers?

It looks like new APIs are needed -- either in a new timed callback
API, or something usable from the callback function.

Timed callback is just a convenience, the real code might use its own even loop and/or threads, so something usable from the callback is definitely better.

BTW, Cherokee has an interesting way about that, allowing the connection to wait on an arbitrary file descriptor. So one can make a `pipefd` file descriptor just to wake the connection up: https://gist.github.com/ArtemGr/5797289

On Mon, Mar 31, 2014 at 5:00 AM, Eric Covener <covener@xxxxxxxxx> wrote:
Without looking at it too deeply, It seems like suspendable handlers
(that continue on as HTTP) are not really working.

When your timed callback ends, the underlying socket is not in the
"keepalive" queue anymore in the MPM. The way it normally gets back
into that queue is by ap_process_request ending up with state ==
CONN_STATE_WRITE_COMPLETION, you can see that it doesn't take much to
hook it back into the keepalive queue in event.c.

It looks like new APIs are needed -- either in a new timed callback
API, or something usable from the callback function. Unfortunately the
timed callback is not explicitly connection-rec related now so it
cannot really sort this out without some hints.



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux