sub peerhost
{
my $conn = shift;
- $conn->{peerhost} ||= 'ax25' if $conn->ax25;
- $conn->{peerhost} ||= $conn->{sock}->handle->peerhost if $conn->{sock};
- $conn->{peerhost} ||= 'UNKNOWN';
+ unless ($conn->{peerhost}) {
+ $conn->{peerhost} ||= 'ax25' if $conn->ax25;
+ $conn->{peerhost} ||= $conn->{sock}->handle->peerhost if $conn->{sock};
+ $conn->{peerhost} ||= 'UNKNOWN';
+ }
return $conn->{peerhost};
}
undef $conn->{sock};
my $sock = $conn->{sock} = Mojo::IOLoop::Stream->new($handle);
$sock->on(read => sub {$conn->_rcv($_[1]);} );
- $sock->on(error => sub {$conn->disconnect;});
- $sock->on(close => sub {$conn->disconnect;});
+ $sock->on(error => sub {delete $conn->{sock}; $conn->disconnect;});
+ $sock->on(close => sub {delete $conn->{sock}; $conn->disconnect;});
$sock->timeout(0);
$sock->start;
$conn->{peerhost} = eval { $handle->peerhost; };
my $conn = shift;
my $rq = $conn->{outqueue};
my $sock = $conn->{sock};
+ return unless defined $sock;
+ return if $conn->{disconnecting};
+
while (@$rq) {
my $data = shift @$rq;
my $lth = length $data;
}
if (defined $sock) {
$sock->write($data);
- $total_out = $lth;
+ $total_out += $lth;
} else {
dbg("_send_stuff $call ending data ignored: $data");
}
my $msg = shift;
my $sock = $conn->{sock};
return unless defined($sock);
+ return if $conn->{disconnecting};
+
+ $total_in += length $msg;
my @lines;
if (isdbg('raw')) {