You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2005/04/05 18:34:56 UTC

svn commit: r160197 - perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm

Author: stas
Date: Tue Apr  5 09:34:54 2005
New Revision: 160197

URL: http://svn.apache.org/viewcvs?view=rev&rev=160197
Log:
make sure that the sockets are blocking

Modified:
    perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm

Modified: perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm
URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm?view=diff&r1=160196&r2=160197
==============================================================================
--- perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm (original)
+++ perl/modperl/trunk/t/protocol/TestProtocol/eliza.pm Tue Apr  5 09:34:54 2005
@@ -18,6 +18,17 @@
     my Apache2::Connection $c = shift;
     my APR::Socket $socket = $c->client_socket;
 
+    # starting from Apache 2.0.49 several platforms require you to set
+    # the socket to a blocking IO mode
+    my $nonblocking = $socket->opt_get(APR::Const::SO_NONBLOCK);
+    if ($nonblocking) {
+        $socket->opt_set(APR::Const::SO_NONBLOCK, 0);
+
+        # test that we really *are* in the blocking mode
+        !$socket->opt_get(APR::Const::SO_NONBLOCK)
+            or die "failed to set blocking mode";
+    }
+
     my $last = 0;
     while ($socket->recv(my $buff, BUFF_LEN)) {
         # \r is sent instead of \n if the client is talking over telnet