my $self = shift;
my $dxchan = shift;
+ if ($self->{to} eq $main::mycall) {
+ if ($self->{s} eq '1') {
+ my $rep = DXXml::Ping->new(to=>$self->{o},
+ s=>'0',
+ oid=>$self->{id},
+ ot=>$self->{t}
+ );
+ $dxchan->send($rep->toxml);
+ } else {
+ handle_ping_reply($dxchan, $self->{o}, $self->{ot}, $self->{oid});
+ }
+ } else {
+ $self->route($dxchan);
+ }
}
sub topcxx
my $ref = $pings{$to} || [];
my $r = {};
my $self = DXXml::Ping->new(to=>$to, '-hirestime'=>[ gettimeofday ], s=>'1');
- $self->{u} = $from unless $from eq $main::mycall;
+ $self->{u} = $from;
$self->{'-via'} = $via if $via && DXChannel::get($via);
$self->{o} = $main::mycall;
$self->{id} = $self->nextid;
{
my $fromdxchan = shift;
my $from = shift;
+ my $ot = shift;
+ my $oid = shift;
my $fromxml;
if (ref $from) {
my $tochan = DXChannel::get($from);
while (@$ref) {
my $r = shift @$ref;
- my $dxchan = DXChannel::get($r->{to});
+ my $dxchan = DXChannel::get($r->{u});
next unless $dxchan;
my $t = tv_interval($r->{'-hirestime'}, [ gettimeofday ]);
if ($dxchan->is_user) {