apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steve Hay <steve.m....@googlemail.com>
Subject Request for help with failing apr_socket_recv() call on Windows
Date Mon, 19 May 2014 07:52:12 GMT
I'm trying to figure out why four tests in the mod_perl test suite
fail with httpd-2.4.x when they succeed just fine with httpd-2.2.x.
(I'm using 2.4.9 and 2.2.26, with the httpd24threading branch of
modperl in SVN, where development work towards support for 2.4.x is
nearly complete.)

One of the tests is t/protocol/echo_block.t. This obtains a $socket
from Apache::TestRequest::vhost_socket(), prints "hello" to it and
tries to read "hello" back from it -- the handler at the other end
simply send()s what it recv()s from a socket, doing blocking IO.

If I break in apr_socket_recv() in 2.4.9 then I find that WSARecv()
"hangs" for a little while and then returns SOCKET_ERROR, with
apr_get_netos_error() returning 730060 ("A connection attempt failed
because the connected party did not properly respond after a period of
time, or established connection failed because connected host has
failed to respond") -- this is WSAETIMEDOUT (10060).

But using 2.2.26 (with the same perl and modperl) WSARecv() returns
immediately, writing data into the buffer and setting the length as
expected.

Does anyone have any suggestion why this might be? Has something
changed in this area in httpd-2.4.x that modperl needs to catch up
with (particularly on Windows since this test works fine on Linux).
(The sendrecv.c files themselves are the same between 2.2.26 and 2.4.9
in both win32 and unix flavours, but I'm wondering if something else
has changed that I'm missing.)

Mime
View raw message