Browse Source

support ice test script

Change-Id: I1e4fb0101da2b648dd0ff0e39810748c87826b64
changes/34/5834/1
Richard Fuchs 10 years ago
parent
commit
ec10dbc9e6
2 changed files with 35 additions and 0 deletions
  1. +20
    -0
      utils/Rtpengine.pm
  2. +15
    -0
      utils/test-ice.pl

+ 20
- 0
utils/Rtpengine.pm View File

@ -144,6 +144,10 @@ sub mux_timeout {
my $t = shift(@{$self->{timers}}); my $t = shift(@{$self->{timers}});
$t->{sub}->(); $t->{sub}->();
} }
for my $cl (@{$self->{clients}}) {
$cl->_timer();
}
} }
@ -199,6 +203,14 @@ sub _new {
$self->{local_media}->add_attrs($self->{dtls}->encode()); $self->{local_media}->add_attrs($self->{dtls}->encode());
$self->{dtls}->accept(); # XXX support other modes $self->{dtls}->accept(); # XXX support other modes
} }
if ($args{ice}) {
$self->{ice} = ICE->new(2, 1); # 2 components, controlling XXX
my $pref = 65535;
for my $s (@sockets) {
$self->{ice}->add_candidate($pref--, 'host', @$s); # 2 components
}
$self->{local_media}->add_attrs($self->{ice}->encode());
}
return $self; return $self;
} }
@ -241,6 +253,7 @@ sub _offered {
# XXX validate SDP # XXX validate SDP
@{$self->{remote_sdp}->{medias}} == 1 or die; @{$self->{remote_sdp}->{medias}} == 1 or die;
$self->{remote_media} = $self->{remote_sdp}->{medias}->[0]; $self->{remote_media} = $self->{remote_sdp}->{medias}->[0];
$self->{ice} and $self->{ice}->decode($self->{remote_media}->decode_ice());
} }
sub answer { sub answer {
@ -265,6 +278,7 @@ sub _answered {
# XXX validate SDP # XXX validate SDP
@{$self->{remote_sdp}->{medias}} == 1 or die; @{$self->{remote_sdp}->{medias}} == 1 or die;
$self->{remote_media} = $self->{remote_sdp}->{medias}->[0]; $self->{remote_media} = $self->{remote_sdp}->{medias}->[0];
$self->{ice} and $self->{ice}->decode($self->{remote_media}->decode_ice());
} }
sub _input { sub _input {
@ -274,6 +288,12 @@ sub _input {
_peer_addr_check($fh, $peer, $self->{rtcp_sockets}, $self->{component_peers}, 1); _peer_addr_check($fh, $peer, $self->{rtcp_sockets}, $self->{component_peers}, 1);
$self->{dtls} and $self->{dtls}->input($fh, $input, $peer); $self->{dtls} and $self->{dtls}->input($fh, $input, $peer);
$self->{ice} and $self->{ice}->input($fh, $input, $peer);
}
sub _timer {
my ($self) = @_;
$self->{ice} and $self->{ice}->timer();
} }
sub _peer_addr_check { sub _peer_addr_check {


+ 15
- 0
utils/test-ice.pl View File

@ -0,0 +1,15 @@
#!/usr/bin/perl
use strict;
use warnings;
use Rtpengine;
my $r = Rtpengine::Test->new();
my $a = $r->client(ice => 1);
my $b = $r->client();
$r->timer_once(3, sub { $b->answer($a) });
$a->offer($b, ICE => 'remove');
$r->run();

Loading…
Cancel
Save