Dirk van der Zee wrote:
Hi All,

I have written a POP3 protocol-handler which uses the PerlProcessConnectionHandler. The solution worked fine under Apache 2.0 and ModPerl 2.0, but after an upgrade to Apache 2.2 and Mod_Perl 2.0.2 it doesn't work correctly. (We upgraded from Ubuntu-Dapper to Ubuntu-Gutsy).

That's could be because since Apache 2.0.49, you have need to
set the socket to blocking mode explicitely.

From the test suite:

    # 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";
    }

Specifically the problem is that the "sub handler" gets called only after the client sends a linefeed. In the old situation the handler started directly. The POP3 protocol needs a "+OK" response
 after the connection has been established.

Are you sure of that, I would think your handler gets called, just that
the $sock->send() gets buffered incorrectly, and not sent to the client
yet.

--
Philippe M. Chiasson     GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/       m/gozer\@(apache|cpan|ectoplasm)\.org/

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to