csort => 'telnet',
timeval => 60,
blocking => 0,
+ cnum => ++$noconns,
};
- $noconns++;
dbg('connll', "Connection created ($noconns)");
return bless $conn, $class;
}
if (ref $pkg) {
$call = $pkg->{call} unless $call;
return undef unless $call;
- confess "changing $pkg->{call} to $call" if exists $pkg->{call} && $call ne $pkg->{call};
+ dbg('connll', "changing $pkg->{call} to $call") if exists $pkg->{call} && $call ne $pkg->{call};
$pkg->{call} = $call;
$ref = $conns{$call} = $pkg;
- dbg('connll', "Connection $call stored");
+ dbg('connll', "Connection $pkg->{cnum} $call stored");
} else {
$ref = $conns{$call};
}
my ($pkg, $pid) = @_;
my @pid = grep {$_->{pid} == $pid} values %conns;
- for (@pid) {
- &{$_->{eproc}}($_, "$pid has gorn") if exists $_->{eproc};
- $_->disconnect;
+ foreach my $p (@pid) {
+ &{$p->{eproc}}($p, "$pid has gorn") if exists $p->{eproc};
+ $p->disconnect;
}
}
delete $conns{$call} if $ref && $ref == $conn;
}
$call ||= 'unallocated';
- dbg('connll', "Connection $call disconnected");
+ dbg('connll', "Connection $conn->{cnum} $call disconnected");
unless ($main::is_win) {
kill 'TERM', $conn->{pid} if exists $conn->{pid};
$conn->disconnect;
return 0; # fail. Message remains in queue ..
}
- }
+ } elsif (isdbg('raw')) {
+ my $call = $conn->{call} || 'none';
+ dbgdump('raw', "$call send $bytes_written: ", $msg);
+ }
$offset += $bytes_written;
$bytes_to_write -= $bytes_written;
}
if (defined ($bytes_read)) {
if ($bytes_read > 0) {
$conn->{msg} .= $msg;
+ if (isdbg('raw')) {
+ my $call = $conn->{call} || 'none';
+ dbgdump('raw', "$call read $bytes_read: ", $msg);
+ }
}
} else {
if (_err_will_block($!)) {
# close all clients (this is for forking really)
sub close_all_clients
{
- for (values %conns) {
- $_->disconnect;
+ foreach my $conn (values %conns) {
+ $conn->disconnect;
}
}
{
my $conn = shift;
my $call = $conn->{call} || 'unallocated';
- dbg('connll', "Connection $call being destroyed ($noconns)");
+ my $host = $conn->{peerhost} || '';
+ my $port = $conn->{peerport} || '';
+ dbg('connll', "Connection $conn->{cnum} $call [$host $port] being destroyed");
$noconns--;
}