summaryrefslogtreecommitdiff
path: root/ext/IO
diff options
context:
space:
mode:
Diffstat (limited to 'ext/IO')
-rw-r--r--ext/IO/lib/IO/Socket/INET.pm6
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/IO/lib/IO/Socket/INET.pm b/ext/IO/lib/IO/Socket/INET.pm
index d2cc488dd2..56dd7a2660 100644
--- a/ext/IO/lib/IO/Socket/INET.pm
+++ b/ext/IO/lib/IO/Socket/INET.pm
@@ -84,7 +84,8 @@ sub _error {
my $err = shift;
{
local($!);
- $@ = join("",ref($sock),": ",@_);
+ my $title = ref($sock).": ";
+ $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_);
close($sock)
if(defined fileno($sock));
}
@@ -189,12 +190,13 @@ sub configure {
# my $timeout = ${*$sock}{'io_socket_timeout'};
# my $before = time() if $timeout;
+ undef $@;
if ($sock->connect(pack_sockaddr_in($rport, $raddr))) {
# ${*$sock}{'io_socket_timeout'} = $timeout;
return $sock;
}
- return _error($sock, $!, "Timeout")
+ return _error($sock, $!, $@ || "Timeout")
unless @raddr;
# if ($timeout) {