On 01/02/2009 10:50 PM, Ruediger Pluem wrote:
>
> On 01/02/2009 10:27 PM, William A. Rowe, Jr. wrote:
>> Ruediger Pluem wrote:
>>> Otherwise the table will not be empty anymore in the case that
>>> neither APR_HAS_SO_ACCEPTFILTER nor APR_TCP_DEFER_ACCEPT is set.
>> Uhm ... huh? What gave you the idea that APR_TCP_DEFER_ACCEPT
>> is a volatile? It's present in apr 1.3 (our baseline) and will
>> be sticking around into the foreseeable future.
>>
>> It is neither a HAS nor HAVE feature flag. In fact it's the reason
>> I started refactoring this code, it was complete twaddle.
As I dig deeper into this I think that the whole AcceptFilter config
is busted:
ap_apply_accept_filter allows you set up individual accept filters
for each listening socket. This seems right to me.
OTOH AcceptFilter only allows you to do a global mapping of protocols
to accept filters.
Thus if I want to have two different listeners with the same protocol
but different accept filters I cannot do this configuration wise.
This doesn't seem correct to me.
Furthermore if all this stuff is global the following loop from
listen.c::ap_setup_listeners doesn't really make sense to me:
for (lr = ap_listeners; lr; lr = lr->next) {
num_listeners++;
found = 0;
for (ls = s; ls && !found; ls = ls->next) {
for (addr = ls->addrs; addr && !found; addr = addr->next) {
if (apr_sockaddr_equal(lr->bind_addr, addr->host_addr) &&
lr->bind_addr->port == addr->host_port) {
found = 1;
ap_apply_accept_filter(s->process->pool, lr, ls);
}
}
}
if (!found) {
ap_apply_accept_filter(s->process->pool, lr, s);
}
}
Why do we need to iterate over the server recs then (2nd loop)?
The config information about protocol filter mappings should be
only in the main server rec.
Regards
RĂ¼diger