|
|
|
|
@ -382,11 +382,11 @@ $has_recv = 0;
|
|
|
|
|
while ($has_recv != 3) {
|
|
|
|
|
# receive STUN packet, either triggered check or success
|
|
|
|
|
@ret2 = rcv($sock_c, $port_a, qr/^\x01(\x01)\x00.\x21\x12\xa4\x42\Q$tid\E|^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine/s);
|
|
|
|
|
if (@ret2[0]) {
|
|
|
|
|
if ($ret2[0]) {
|
|
|
|
|
# STUN success
|
|
|
|
|
$has_recv |= 1;
|
|
|
|
|
}
|
|
|
|
|
elsif (@ret2[1]) {
|
|
|
|
|
elsif ($ret2[1]) {
|
|
|
|
|
# triggered check
|
|
|
|
|
@ret1 = @ret2;
|
|
|
|
|
$has_recv |= 2;
|
|
|
|
|
@ -402,10 +402,10 @@ snd($sock_d, $port_ax, $packet);
|
|
|
|
|
$has_recv = 0;
|
|
|
|
|
while ($has_recv != 3) {
|
|
|
|
|
@ret2 = rcv($sock_d, $port_ax, qr/^\x01(\x01)\x00.\x21\x12\xa4\x42\Q$tid\E|^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine/s);
|
|
|
|
|
if (@ret2[0]) {
|
|
|
|
|
if ($ret2[0]) {
|
|
|
|
|
$has_recv |= 1;
|
|
|
|
|
}
|
|
|
|
|
elsif (@ret2[1]) {
|
|
|
|
|
elsif ($ret2[1]) {
|
|
|
|
|
@ret1 = @ret2;
|
|
|
|
|
$has_recv |= 2;
|
|
|
|
|
}
|
|
|
|
|
@ -479,7 +479,7 @@ rcv($sock_a, -1, qr/^\x00\x01\x00.\x21\x12\xa4\x42/s);
|
|
|
|
|
rcv($sock_b, -1, qr/^\x00\x01\x00.\x21\x12\xa4\x42/s);
|
|
|
|
|
|
|
|
|
|
# send our own STUN checks from different port, resulting in learned prflx candidates
|
|
|
|
|
my ($packet, $tid) = stun_req(0, 65527, 1, 'q27e93', $ufrag_a, $ufrag_b);
|
|
|
|
|
($packet, $tid) = stun_req(0, 65527, 1, 'q27e93', $ufrag_a, $ufrag_b);
|
|
|
|
|
snd($sock_c, $port_a, $packet);
|
|
|
|
|
|
|
|
|
|
$has_recv = 0;
|
|
|
|
|
@ -487,11 +487,11 @@ $has_recv = 0;
|
|
|
|
|
while ($has_recv != 3) {
|
|
|
|
|
# receive STUN packet, either triggered check or success
|
|
|
|
|
@ret2 = rcv($sock_c, $port_a, qr/^\x01(\x01)\x00.\x21\x12\xa4\x42\Q$tid\E|^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine/s);
|
|
|
|
|
if (@ret2[0]) {
|
|
|
|
|
if ($ret2[0]) {
|
|
|
|
|
# STUN success
|
|
|
|
|
$has_recv |= 1;
|
|
|
|
|
}
|
|
|
|
|
elsif (@ret2[1]) {
|
|
|
|
|
elsif ($ret2[1]) {
|
|
|
|
|
# triggered check
|
|
|
|
|
@ret1 = @ret2;
|
|
|
|
|
$has_recv |= 2;
|
|
|
|
|
@ -507,10 +507,10 @@ snd($sock_d, $port_ax, $packet);
|
|
|
|
|
$has_recv = 0;
|
|
|
|
|
while ($has_recv != 3) {
|
|
|
|
|
@ret2 = rcv($sock_d, $port_ax, qr/^\x01(\x01)\x00.\x21\x12\xa4\x42\Q$tid\E|^\x00\x01\x00.\x21\x12\xa4\x42(............)\x80\x22\x00.rtpengine/s);
|
|
|
|
|
if (@ret2[0]) {
|
|
|
|
|
if ($ret2[0]) {
|
|
|
|
|
$has_recv |= 1;
|
|
|
|
|
}
|
|
|
|
|
elsif (@ret2[1]) {
|
|
|
|
|
elsif ($ret2[1]) {
|
|
|
|
|
@ret1 = @ret2;
|
|
|
|
|
$has_recv |= 2;
|
|
|
|
|
}
|
|
|
|
|
|