perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <>
Subject Re: modperl and the TCP_DEFER_ACCEPT-patch for linux
Date Sat, 07 May 2005 17:33:39 GMT
Torsten Foertsch wrote:
> On Saturday 07 May 2005 08:30, Stas Bekman wrote:
>>Torsten Foertsch wrote:
>>>yesterday I have patched my apache with this patch and now I have noticed
>>>that testing mod_perl hangs in t/protocol/pseudo_http. The reason is
>>>simple and to be expected. t/protocol/pseudo_http tests a protocol module
>>>that is greeting the client with "HELO" before receiving any data. Since
>>>the patch prevents accept(2) from returning before data has been received
>>>from the client the connection is not accepted. Hence no piece of code
>>>gets chance to send "HELO".
>>>Maybe it is worth to change the test so that the client must send
>>>someting at first?
>>>I could provide a patch.
>>What's that patch you are talking about, Torsten?
> Sorry for not providing a link. Here it is:

Ah, thanks Torsten, I have lots of emails to catch up with.

> The whole thing came from a discussion about the Timeout configuration 
> directive, see
> One proposed solution was to enable BSD accept-filtering. Thus, accept(2) will 
> return only if a complete HTTP-request is ready to be read. For Linux a 
> similar mechanism exists with the TCP_DEFER_ACCEPT socket option. According 
> to the thread Apache 2.1 uses this option. Then a backport was suggested 
> resulting in the patch.

Do you get the same problem when testing with httpd-2.1? I didn't try 
recently, was it a recent change in 2.1 too?

>>This workaround doesn't sound right. A protocol handler (server) must be
>>able to start the conversation first. If not, many protocols relying on
>>the server's greeing (e.g. SMTP) won't work. e.g., see:
> I know that it would break some protocols. It can be accepted to httpd-2.0 
> only if it is configurable. I was asking whether testing mod_perl should rely 
> on the server's ability to send data first.

It shouldn't be in Apache-2 at all, I've posted an email to httpd-dev 
regarding this issue.

> If not, the attached patch changes slightly the protocol initialization. Now 
> the client should send "HELO". The server replies "Nice to meet you".

No, this is wrong. The test is written to test the functionality not to 
have 100% pass.

Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker     mod_perl Guide --->

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message