$conn->{eproc} = $callback;
}
-sub set_eof
+sub set_on_eof
{
my $conn = shift;
my $callback = shift;
- $conn->{sock}->on_eof(sub {$callback});
+ $conn->{sock}->on_eof($callback);
+ $conn->{sock}->on_error($callback);
}
sub set_rproc
connect => [$to_host, $to_port],
-# on_connect => sub {my $h = shift; $conn->{peerhost} = $h->handle->peername;},
+ on_connect => sub {my $h = shift; $conn->{peerhost} = shift;},
on_eof => sub {$conn->disconnect},
}
}
- if (defined($sock)) {
+ if (ref $sock && $sock->isa('AnyEvent::Handle') && exists $sock->{fh}) {
shutdown($sock->{fh}, 2);
$sock->destroy;
+ } else {
+ my $s;
+ $s = "already destroyed" unless exists $sock->{fh};
+ $s ||= ref $sock || $sock || "undefined";
+ dbg("Msg::disconnect trying to disconnect a $s socket") if isdbg('chan');
}
unless ($main::is_win) {