| line |
true |
false |
branch |
|
71
|
0 |
55 |
if %args |
|
79
|
0 |
30 |
if (ref $_) { } |
|
82
|
0 |
30 |
unless my($proto, $host, $port, $family) = sip_uri2sockinfo($_) |
|
84
|
0 |
0 |
$proto && $proto eq 'tls' ? : |
|
85
|
48 |
0 |
$family ? : |
|
|
12 |
18 |
$proto ? : |
|
97
|
0 |
55 |
defined $do_retransmits ? : |
|
110
|
0 |
55 |
if $outgoing_proxy |
|
115
|
168 |
0 |
if ($self) { } |
|
137
|
0 |
0 |
unless @_ |
|
154
|
0 |
0 |
unless @_ |
|
170
|
57 |
0 |
if (my $receiver = shift()) { } |
|
171
|
5 |
52 |
if (my $sub = UNIVERSAL::can($receiver, 'receive')) |
|
198
|
57 |
0 |
if (UNIVERSAL::isa($arg, 'Net::SIP::Leg')) { } |
|
|
0 |
0 |
elsif (UNIVERSAL::isa($arg, 'IO::Handle')) { } |
|
|
0 |
0 |
elsif (UNIVERSAL::isa($arg, 'HASH')) { } |
|
215
|
57 |
0 |
if (my $socketpool = $leg->socketpool) |
|
218
|
0 |
204 |
unless eval {
do {
my($self, $leg, $packet, $from) = @_;
return unless $self;
return unless ($packet, $from) = $leg->receive($packet, $from);
if ($packet->is_request) {
$packet->scan_header('via', [sub {
my($vref, $hdr) = @_;
return if $$vref++;
my($d, $h) = sip_hdrval2parts('via', $hdr->{'value'});
my($host, $port) = $d =~ m[^SIP/2\S+\s+(\S+)$] ? ip_string2parts($1) : ();
my %nh;
if (exists $h->{'rport'} and not defined $h->{'rport'}) {
$nh{'rport'} = $from->{'port'};
};
if ($host ne $from->{'addr'}) {
$nh{'received'} = $from->{'addr'};
}
elsif ($nh{'rport'}) {
$nh{'received'} = $from->{'addr'};
};
if (%nh) {
$hdr->{'value'} = sip_parts2hdrval('via', $d, {%$h, %nh});
$hdr->set_modified;
};
}
, \my $cvia]);
};
$self->receive($packet, $leg, $from);
1
}
} |
|
220
|
0 |
204 |
unless $self |
|
222
|
0 |
204 |
unless ($packet, $from) = $leg->receive($packet, $from) |
|
224
|
65 |
139 |
if ($packet->is_request) |
|
228
|
0 |
65 |
if $$vref++ |
|
230
|
65 |
0 |
$d =~ m[^SIP/2\S+\s+(\S+)$] ? : |
|
233
|
0 |
65 |
if (exists $h->{'rport'} and not defined $h->{'rport'}) |
|
236
|
0 |
65 |
if ($host ne $from->{'addr'}) { } |
|
|
0 |
65 |
elsif ($nh{'rport'}) { } |
|
244
|
0 |
65 |
if (%nh) |
|
275
|
51 |
0 |
if (my $pool = $leg->socketpool) |
|
296
|
151 |
2 |
unless @_ |
|
301
|
0 |
2 |
if $leg->match(\%args) |
|
320
|
7 |
0 |
if (ref $_[-1] eq 'SCALAR') |
|
328
|
7 |
24 |
if $legs->[$i] == $_ |
|
347
|
0 |
0 |
if (ref $_[-1]) |
|
348
|
0 |
0 |
if ${pop @_;} ne join('|', map({$_->key;} @$legs)) |
|
390
|
180 |
7 |
unless defined $do_retransmits |
|
394
|
71 |
116 |
if ($packet->is_response) |
|
396
|
71 |
0 |
if ($do_retransmits) |
|
413
|
180 |
7 |
if $do_retransmits |
|
430
|
46 |
286 |
if (@_ == 2) { } |
|
432
|
46 |
0 |
if ($typ eq 'callid') { } |
|
|
0 |
0 |
elsif ($typ eq 'id') { } |
|
|
0 |
0 |
elsif ($typ eq 'qentry') { } |
|
440
|
128 |
158 |
if (ref $id) |
|
447
|
128 |
204 |
if ($qentry) { } |
|
|
158 |
46 |
elsif (defined $id) { } |
|
|
46 |
0 |
elsif (defined $callid) { } |
|
483
|
72 |
139 |
if ($packet->is_request) |
|
485
|
44 |
28 |
if (%$cache) |
|
491
|
2 |
42 |
if (my $response = $cache->{$cid}) |
|
524
|
10 |
0 |
if (my $retransmits = $qe->{'retransmits'}) |
|
529
|
0 |
10 |
unless (@$retransmits) |
|
539
|
8 |
2 |
if ($retransmit) |
|
545
|
10 |
0 |
if (not defined $min_expire or $next_retransmit < $min_expire) |
|
552
|
0 |
168 |
if $changed |
|
558
|
0 |
75 |
if ($expire < $now) { } |
|
|
61 |
14 |
elsif (not defined $min_expire or $expire < $min_expire) { } |
|
589
|
0 |
304 |
if ($leg and @{$qentry->{'leg'};} > 1) |
|
594
|
109 |
195 |
unless ($dst_addr and $leg) |
|
601
|
0 |
109 |
if (my($route) = $packet->get_header('route')) { } |
|
611
|
0 |
109 |
if (@error) { } |
|
627
|
30 |
165 |
if ($qentry->{'retransmits'} and not $leg->do_retransmits) |
|
634
|
0 |
88 |
unless $self |
|
635
|
0 |
88 |
if (not $error and $qentry->{'retransmits'}) |
|
645
|
0 |
195 |
if $Net::SIP::Dispatcher::DEBUG |
|
652
|
128 |
67 |
if (not $qentry->{'retransmits'}) |
|
679
|
0 |
116 |
unless ($domain) |
|
686
|
10 |
106 |
if ($sip_proto eq 'sips') { } |
|
|
4 |
102 |
elsif (my $p = $param->{'transport'}) { } |
|
700
|
0 |
116 |
if ($allowed_proto and @$allowed_proto) |
|
704
|
0 |
0 |
if $p |
|
707
|
0 |
0 |
unless (@proto) |
|
716
|
37 |
79 |
if (@$legs) |
|
720
|
0 |
116 |
unless (@$allowed_legs) |
|
727
|
7 |
109 |
$ip_addr ? : |
|
728
|
71 |
45 |
if defined $port |
|
729
|
64 |
52 |
if ($family) { } |
|
739
|
116 |
0 |
unless (@$dst_addr) |
|
741
|
81 |
35 |
if ($d2p and %$d2p) |
|
745
|
38 |
183 |
unless $dom =~ s/^[^\.]+\.// |
|
749
|
45 |
36 |
if ($addr) |
|
757
|
0 |
116 |
if (not @$dst_addr and my $addr = $self->{'outgoing_proxy'}) |
|
765
|
71 |
45 |
if (not @$dst_addr and $ip_addr) |
|
771
|
7 |
109 |
if (my $ip = $param->{'maddr'}) |
|
772
|
7 |
0 |
if ip_is_v46($ip) |
|
779
|
72 |
71 |
if (ref $addr) { } |
|
782
|
0 |
71 |
unless my($proto, $host, $port, $family) = sip_uri2sockinfo($addr) |
|
784
|
71 |
0 |
$family ? : |
|
791
|
0 |
71 |
$proto ? : |
|
800
|
4 |
112 |
if (@resp and my $proto = $param->{'transport'}) |
|
802
|
0 |
4 |
if ($proto eq 'udp') { } |
|
|
4 |
0 |
elsif ($proto eq 'tcp') { } |
|
|
0 |
0 |
elsif ($proto eq 'tls') { } |
|
813
|
0 |
4 |
unless @resp |
|
817
|
116 |
0 |
if (@resp) |
|
820
|
116 |
0 |
unless grep {not $_->{'addr'};} @resp |
|
837
|
0 |
116 |
if $Net::SIP::Dispatcher::DEBUG |
|
839
|
0 |
116 |
unless $resp and @$resp |
|
860
|
122 |
81 |
if ($leg) { } |
|
868
|
0 |
116 |
unless @$dst_addr |
|
876
|
0 |
0 |
unless (ref $dst_addr) |
|
878
|
0 |
0 |
$si[3] ? : |
|
904
|
0 |
0 |
if (not ref $host) { } |
|
|
0 |
0 |
elsif (ref $host eq 'HASH') { } |
|
917
|
0 |
0 |
unless @rec |
|
929
|
0 |
0 |
if ($_->{'addr'}) { } |
|
935
|
0 |
0 |
unless @rec |
|
977
|
0 |
0 |
$_ eq 'tls' ? : |
|
1042
|
0 |
0 |
if $qid |
|
1046
|
0 |
0 |
unless $qid |
|
1050
|
0 |
0 |
if ($q->{'type'} eq 'BREAK-IF-RESULTS') |
|
1051
|
0 |
0 |
if (@$results) |
|
1056
|
0 |
0 |
if ($i == 0) |
|
1064
|
0 |
0 |
unless "$q->{'type'}:$q->{'name'}" eq $qid |
|
1070
|
0 |
0 |
if ($q->{'type'} eq 'SRV') { } |
|
|
0 |
0 |
elsif ($q->{'type'} eq 'AAAA' or $q->{'type'} eq 'A') { } |
|
1074
|
0 |
0 |
if ($type eq 'A' or $type eq 'AAAA') |
|
1080
|
0 |
0 |
if $type ne 'SRV' |
|
1084
|
0 |
0 |
$family ? : |
|
1093
|
0 |
0 |
if $res[$i]{'family'} |
|
1094
|
0 |
0 |
unless my $ipt = $addr2ip{$res[$i]{'host'}} |
|
1098
|
0 |
0 |
$type eq 'A' ? : |
|
1108
|
0 |
0 |
if ($_->{'family'}) |
|
1119
|
0 |
0 |
$type eq 'A' ? : |
|
1131
|
0 |
0 |
$type eq 'A' ? : |
|
1142
|
0 |
0 |
unless (@$queries) |
|
1175
|
0 |
0 |
if ($rr->type eq 'SRV') { } |
|
|
0 |
0 |
elsif ($rr->type eq 'A' or $rr->type eq 'AAAA') { } |
|
1243
|
109 |
78 |
if (not $addr) { } |
|
|
0 |
78 |
elsif (not ref $addr) { } |
|
|
78 |
0 |
elsif (ref $addr eq 'HASH') { } |
|
1246
|
0 |
0 |
$si[3] ? : |
|
1258
|
115 |
72 |
if (my $leg = $self->{'leg'}) |
|
1259
|
115 |
0 |
if UNIVERSAL::can($leg, 'deliver') |
|
1275
|
52 |
128 |
if $self->{'leg'}[0] and not $self->{'leg'}[0]->do_retransmits |
|
1286
|
34 |
94 |
if ($p->is_response) { } |
|
|
38 |
56 |
elsif ($p->method eq 'INVITE') { } |
|
|
22 |
34 |
elsif ($p->method eq 'ACK') { } |
|
1287
|
17 |
17 |
if ($p->code > 100 and $p->cseq =~ /\sINVITE$/) |
|
1304
|
39 |
89 |
unless $t1 |
|
1315
|
357 |
381 |
if $t2 and $to > $t2 |