The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Net::SIP qw(:all);
use Getopt::Long qw(:config posix_default bundling);

my $debug;
my $from = 'sip:me@two.example.com';
my $leg = '127.0.0.1:5070';
my $registrar;

GetOptions(
	'd|debug:i' => \$debug,
	'h|help' => sub { usage() },
	'F|from=s' => \$from,
	'L|leg=s' => \$leg,
	'R|registrar=s' => \$registrar,
) || usage( 'bad options' );
Debug->level( $debug || 1 ) if defined $debug;

my $ua = Simple->new(
	from => $from,
	leg => $leg,
	registrar => $registrar,
);
if ( $registrar ) {
	die "Registration failed\n" if ! $ua->register;
	print STDERR "Registered\n";
}


$ua->listen(
	# echo everything back
	init_media => $ua->rtp( 'recv_echo' ),
);
print "Listening...\n";
$ua->loop;


sub usage {
	print STDERR "ERROR: @_\n" if @_;
	print STDERR <<USAGE;

Listen on given address and receive calls, echo RTP back.
Handles multiple calls in parallel.
Usage: $0 options
Options:
 -h|--help    This usage
 -d|--debug   Switch on debugging with optional level
 -F|--from    senders address, default $from
 -L|--leg     Leg to listen on, default $leg
 -R|--registrar   Optional Registrar

USAGE
	exit(2);
}