diff --git a/utils/rtpengine-ctl b/utils/rtpengine-ctl index 9be75495a..9d0f711c5 100755 --- a/utils/rtpengine-ctl +++ b/utils/rtpengine-ctl @@ -4,34 +4,28 @@ use strict; use warnings; use IO::Socket::INET; - -my $num_args = $#ARGV + 1; -if ( ($num_args == 0) or - (($num_args == 1) && (($ARGV[0] eq "--help") or ($ARGV[0] eq "-h"))) ) -{ - showusage(); - exit; -} +use Getopt::Long; my $argumentstring = ""; my $ip = "127.0.0.1"; -my $port = "9900"; +my $port = 9900; -for (my $argnum=0; $argnum <= $#ARGV; $argnum++) { - if ($ARGV[$argnum] eq "-ip") { - die "No argument after -ip\n" unless $argnum+1<=$#ARGV; - $argnum = $argnum+1; - $ip = $ARGV[$argnum]; - if ($ip =~ s/:(\d)$//) { - $port = $1; - } - } elsif ($ARGV[$argnum] eq "-port") { - die "No argument after -port\n" unless $argnum+1<=$#ARGV; - $argnum = $argnum+1; - $port = $ARGV[$argnum]; - } else { - $argumentstring .= "$ARGV[$argnum] "; - } +my $optret = GetOptions( + 'help|h' => sub { showusage(); exit 0; }, + 'ip=s' => \$ip, + 'port=i' => \$port, +); + +if ($ip =~ s/:(\d+)$//) { + $port = $1; +} + +$argumentstring = "@ARGV"; +$argumentstring = trim($argumentstring); + +if (!$argumentstring || !$optret || $port <= 0 || $port > 65535) { + showusage(); + exit 1; } # create a connecting socket @@ -48,7 +42,6 @@ $socket->autoflush(1); setsockopt($socket, SOL_SOCKET, SO_SNDTIMEO, pack('L!L!', 3, 0) ) or die $!; setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack('L!L!', 3, 0) ) or die $!; -$argumentstring = trim($argumentstring); my $size = $socket->send("$argumentstring\n"); # receive a response of up to 10MB