From ec10dbc9e6668d59698a4371e1ebe20b7411dfbd Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 26 Feb 2016 11:57:17 -0500 Subject: [PATCH] support ice test script Change-Id: I1e4fb0101da2b648dd0ff0e39810748c87826b64 --- utils/Rtpengine.pm | 20 ++++++++++++++++++++ utils/test-ice.pl | 15 +++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 utils/test-ice.pl diff --git a/utils/Rtpengine.pm b/utils/Rtpengine.pm index 46afcc8cc..2b61670a8 100644 --- a/utils/Rtpengine.pm +++ b/utils/Rtpengine.pm @@ -144,6 +144,10 @@ sub mux_timeout { my $t = shift(@{$self->{timers}}); $t->{sub}->(); } + + for my $cl (@{$self->{clients}}) { + $cl->_timer(); + } } @@ -199,6 +203,14 @@ sub _new { $self->{local_media}->add_attrs($self->{dtls}->encode()); $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; } @@ -241,6 +253,7 @@ sub _offered { # XXX validate SDP @{$self->{remote_sdp}->{medias}} == 1 or die; $self->{remote_media} = $self->{remote_sdp}->{medias}->[0]; + $self->{ice} and $self->{ice}->decode($self->{remote_media}->decode_ice()); } sub answer { @@ -265,6 +278,7 @@ sub _answered { # XXX validate SDP @{$self->{remote_sdp}->{medias}} == 1 or die; $self->{remote_media} = $self->{remote_sdp}->{medias}->[0]; + $self->{ice} and $self->{ice}->decode($self->{remote_media}->decode_ice()); } sub _input { @@ -274,6 +288,12 @@ sub _input { _peer_addr_check($fh, $peer, $self->{rtcp_sockets}, $self->{component_peers}, 1); $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 { diff --git a/utils/test-ice.pl b/utils/test-ice.pl new file mode 100644 index 000000000..be005ef60 --- /dev/null +++ b/utils/test-ice.pl @@ -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();