Imported Upstream version 0.12
gregor herrmann
11 years ago
0 | 0 |
Revision history for IO-Socket-IP
|
|
1 |
|
|
2 |
0.12 CHANGES:
|
|
3 |
* Ensure that all instances have a defined fileno after construction,
|
|
4 |
even in non-blocking mode (RT77726)
|
1 | 5 |
|
2 | 6 |
0.11 CHANGES:
|
3 | 7 |
* Ignore unrecognised constructor arguments rather than complaining
|
28 | 28 |
"provides" : {
|
29 | 29 |
"IO::Socket::IP" : {
|
30 | 30 |
"file" : "lib/IO/Socket/IP.pm",
|
31 | |
"version" : "0.11"
|
|
31 |
"version" : "0.12"
|
32 | 32 |
}
|
33 | 33 |
},
|
34 | 34 |
"release_status" : "stable",
|
|
37 | 37 |
"http://dev.perl.org/licenses/"
|
38 | 38 |
]
|
39 | 39 |
},
|
40 | |
"version" : "0.11"
|
|
40 |
"version" : "0.12"
|
41 | 41 |
}
|
13 | 13 |
provides:
|
14 | 14 |
IO::Socket::IP:
|
15 | 15 |
file: lib/IO/Socket/IP.pm
|
16 | |
version: 0.11
|
|
16 |
version: 0.12
|
17 | 17 |
requires:
|
18 | 18 |
IO::Socket: 0
|
19 | 19 |
Socket: 1.97
|
20 | 20 |
resources:
|
21 | 21 |
license: http://dev.perl.org/licenses/
|
22 | |
version: 0.11
|
|
22 |
version: 0.12
|
8 | 8 |
use warnings;
|
9 | 9 |
use base qw( IO::Socket );
|
10 | 10 |
|
11 | |
our $VERSION = '0.11';
|
|
11 |
our $VERSION = '0.12';
|
12 | 12 |
|
13 | 13 |
use Carp;
|
14 | 14 |
|
|
519 | 519 |
|
520 | 520 |
${*$self}{io_socket_ip_errors} = [ undef, undef, undef ];
|
521 | 521 |
|
522 | |
if( $blocking ) {
|
523 | |
$self->setup or return undef;
|
524 | |
}
|
|
522 |
# ->setup is allowed to return false in nonblocking mode
|
|
523 |
$self->setup or !$blocking or return undef;
|
|
524 |
|
525 | 525 |
return $self;
|
526 | 526 |
}
|
527 | 527 |
|
|
593 | 593 |
|
594 | 594 |
return CORE::connect( $self, $_[0] ) if @_;
|
595 | 595 |
|
596 | |
$! = 0, return 1 if $self->fileno and defined $self->peername;
|
597 | |
|
598 | |
if( $self->fileno ) {
|
599 | |
# A connect has just failed, get its error value
|
600 | |
${*$self}{io_socket_ip_errors}[0] = $self->getsockopt( SOL_SOCKET, SO_ERROR );
|
|
596 |
if( defined $self->fileno ) {
|
|
597 |
# A connect call may have just finished. It succeeded if we have a peername
|
|
598 |
$! = 0, return 1 if defined $self->peername;
|
|
599 |
|
|
600 |
# If not, it may have just failed. Get its error value
|
|
601 |
my $errno = ${*$self}{io_socket_ip_errors}[0] = $self->getsockopt( SOL_SOCKET, SO_ERROR );
|
|
602 |
|
|
603 |
# If errno is 0 then it hasn't failed yet, so keep polling
|
|
604 |
$! = EINPROGRESS, return 0 if !$errno;
|
601 | 605 |
}
|
602 | 606 |
|
603 | 607 |
return $self->setup;
|
0 | 0 |
#!/usr/bin/perl -w
|
1 | 1 |
|
2 | 2 |
use strict;
|
3 | |
use Test::More tests => 8;
|
|
3 |
use Test::More tests => 9;
|
4 | 4 |
|
5 | 5 |
use IO::Socket::IP;
|
6 | 6 |
|
|
22 | 22 |
|
23 | 23 |
ok( defined $socket, 'IO::Socket::IP->new( Blocking => 0 ) constructs a socket' ) or
|
24 | 24 |
diag( " error was $@" );
|
|
25 |
|
|
26 |
ok( defined $socket->fileno, '$socket has a fileno immediately after construction' );
|
25 | 27 |
|
26 | 28 |
while( !$socket->connect and ( $! == EINPROGRESS || $! == EWOULDBLOCK ) ) {
|
27 | 29 |
my $wvec = '';
|
0 | 0 |
#!/usr/bin/perl -w
|
1 | 1 |
|
2 | 2 |
use strict;
|
3 | |
use Test::More tests => 10;
|
|
3 |
use Test::More tests => 12;
|
4 | 4 |
|
5 | 5 |
use IO::Socket::IP;
|
6 | 6 |
|
|
28 | 28 |
|
29 | 29 |
ok( defined $socket, "defined \$socket for $test_host:$test_good_port" ) or
|
30 | 30 |
diag( " error was $@" );
|
|
31 |
|
|
32 |
ok( defined $socket->fileno, '$socket has fileno' );
|
31 | 33 |
|
32 | 34 |
# This and test is required to placate a warning IO::Socket would otherwise
|
33 | 35 |
# throw; https://rt.cpan.org/Ticket/Display.html?id=63052
|
|
71 | 73 |
ok( defined $socket, "defined \$socket for $test_host:$test_bad_port" ) or
|
72 | 74 |
diag( " error was $@" );
|
73 | 75 |
|
|
76 |
ok( defined $socket->fileno, '$socket has fileno' );
|
|
77 |
|
74 | 78 |
ok( not( $socket->opened and $socket->connected ), '$socket not yet connected' );
|
75 | 79 |
|
76 | 80 |
my $selectcount = 0;
|