The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Coro::PatchSet::Socket - fix Coro::Socket as much as possible

SYNOPSIS

    use Coro::PatchSet::Socket;
    # or
    # use Coro::PatchSet 'socket';
    use Coro;
    
    async { ... }

PATCHES

timeout

In the current Coro::Socket implementation internal io_socket_timeout variable is not defined. But this variable exists in the IO::Socket::INET objects, which Coro::Socket tries to emulate. And many modules relies on the value of this variable. One of this is LWP::UserAgent, so without this variable timeout in the LWP requests will not work. This patch defines this variable with the value specified in the Timeout constructor option. See t/03_socket_timeout.t

connect

In the current Coro::Socket implementation Coro::Socket->new(PeerAddr => $a, PeerPort => $p) always returns Coro::Socket object, even if connection was not successfull. But in fact it should return undef if fail occured. So, after this patch Coro::Socket constructor will always return proper value. See t/04_socket_connect.t

inheritance

In the current Coro::Socket implementation Coro::Socket handles PeerAddr argument in the constructor. This is not compatible with IO::Socket::INET implementation where all arguments handled inside configure(). Because of this some classes inherited from Coro::Socket which defines PeerAddr only inside configure() may not work. See t/06_socket_inherit.t

SEE ALSO

Coro::PatchSet, Coro::PatchSet::Handle

COPYRIGHT

Copyright Oleg G <oleg@cpan.org>.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.