TT#24097 Fix perl filehandle usage

- Use autoflush method per filehandle instead of setting $| and using
  the one argument select().
- Use lexical variables instead of barewords for filehandles.

Change-Id: Icd71248a28bea0974a79e489add5deee0b65748d
changes/05/16705/2
Guillem Jover 8 years ago
parent d6bc658c36
commit d5f7624a98

@ -4,7 +4,7 @@ use warnings;
use strict; use strict;
use Socket; use Socket;
$| = 1; STDOUT->autoflush(1);
@ -28,11 +28,9 @@ sub mp_msg {
my $fd; my $fd;
socket($fd, AF_INET, SOCK_STREAM, 0) or die; socket($fd, AF_INET, SOCK_STREAM, 0) or die;
connect($fd, sockaddr_in(25060, inet_aton('127.0.0.1'))) or die; connect($fd, sockaddr_in(25060, inet_aton('127.0.0.1'))) or die;
my $old = select($fd); $fd->autoflush(1);
$| = 1; print { $fd } ("$cmd\n");
print("$cmd\n");
my $ret = <$fd>; my $ret = <$fd>;
select($old);
close($fd); close($fd);
chomp($ret); chomp($ret);
return $ret; return $ret;

@ -10,9 +10,9 @@ my $t = $ARGV[0] || "0";
my $format = 'SS ia16SS ia16SS ia16SS CCCC LLLLLL'; my $format = 'SS ia16SS ia16SS ia16SS CCCC LLLLLL';
my $len = length(pack($format, (0) x 100)); my $len = length(pack($format, (0) x 100));
open(X, "<", "/proc/rtpengine/$t/blist") or die; open(my $fh, "<", "/proc/rtpengine/$t/blist") or die;
my $buf; my $buf;
while (sysread(X, $buf, $len)) { while (sysread($fh, $buf, $len)) {
my @b = unpack($format, $buf); my @b = unpack($format, $buf);
for (2,6,10) { for (2,6,10) {
if ($b[$_] == AF_INET) { if ($b[$_] == AF_INET) {
@ -30,3 +30,4 @@ while (sysread(X, $buf, $len)) {
} }
printf("%5u %15s:%-5u -> %15s:%-5u (-> %15s:%-5u) [%u] [%llu %llu %llu]\n", @b[0,3,4,7,8,11,12,14,18,20,22]); printf("%5u %15s:%-5u -> %15s:%-5u (-> %15s:%-5u) [%u] [%llu %llu %llu]\n", @b[0,3,4,7,8,11,12,14,18,20,22]);
} }
close($fh);

@ -8,14 +8,10 @@ use Socket6;
my %cmds = (noop => 1, add => 2, delete => 3, update => 4, add_call => 5, del_call => 6, add_stream => 7, del_stream => 8, packet => 9); my %cmds = (noop => 1, add => 2, delete => 3, update => 4, add_call => 5, del_call => 6, add_stream => 7, del_stream => 8, packet => 9);
my %ciphers = ('null' => 1, 'aes-cm' => 2, 'aes-f8' => 3); my %ciphers = ('null' => 1, 'aes-cm' => 2, 'aes-f8' => 3);
my %hmacs = ('null' => 1, 'hmac-sha1' => 2); my %hmacs = ('null' => 1, 'hmac-sha1' => 2);
$| = 1; STDOUT->autoflush(1);
open(F, "+> /proc/rtpengine/0/control") or die; open(my $fh, '+>', '/proc/rtpengine/0/control') or die;
{ $fh->autoflush(1);
my $x = select(F);
$| = 1;
select($x);
}
sub re_address { sub re_address {
my ($fam, $addr, $port) = @_; my ($fam, $addr, $port) = @_;
@ -140,47 +136,47 @@ my $ret;
my $msg; my $msg;
# print("add 9876 -> 1234/6543\n"); # print("add 9876 -> 1234/6543\n");
# $ret = syswrite(F, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("add fail\n"); # print("add fail\n");
# $ret = syswrite(F, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("update 9876 -> 1234/6543 & 6789\n"); # print("update 9876 -> 1234/6543 & 6789\n");
# $ret = syswrite(F, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("update 9876 -> 2345/7890 & 4321\n"); # print("update 9876 -> 2345/7890 & 4321\n");
# $ret = syswrite(F, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 2345, dst_addr => \@dst, dst_port => 7890, mirror_addr => \@dst, mirror_port => 4321, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 2345, dst_addr => \@dst, dst_port => 7890, mirror_addr => \@dst, mirror_port => 4321, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("add fail\n"); # print("add fail\n");
# $ret = syswrite(F, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, mirror_addr => \@dst, mirror_port => 6789, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("update 9876 -> 1234/6543\n"); # print("update 9876 -> 1234/6543\n");
# $ret = syswrite(F, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("delete\n"); # print("delete\n");
# $ret = syswrite(F, rtpengine_message('delete', local_addr => \@local, local_port => 9876, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('delete', local_addr => \@local, local_port => 9876, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("delete fail\n"); # print("delete fail\n");
# $ret = syswrite(F, rtpengine_message('delete', local_addr => \@local, local_port => 9876, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('delete', local_addr => \@local, local_port => 9876, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
# print("update fail\n"); # print("update fail\n");
# $ret = syswrite(F, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-'; # $ret = syswrite($fh, rtpengine_message('update', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
@ -215,7 +211,7 @@ if (0) {
print("creating call $name\n"); print("creating call $name\n");
$msg = rtpengine_message_call('add_call', 0, $name); $msg = rtpengine_message_call('add_call', 0, $name);
$ret = sysread(F, $msg, length($msg)) // '-'; $ret = sysread($fh, $msg, length($msg)) // '-';
#print("reply: " . unpack("H*", $msg) . "\n"); #print("reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -232,7 +228,7 @@ if (0) {
print("creating stream $name under call idx $call\n"); print("creating stream $name under call idx $call\n");
$msg = rtpengine_message_stream('add_stream', $call, 0, $name); $msg = rtpengine_message_stream('add_stream', $call, 0, $name);
$ret = sysread(F, $msg, length($msg)) // '-'; $ret = sysread($fh, $msg, length($msg)) // '-';
#print("reply: " . unpack("H*", $msg) . "\n"); #print("reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -249,7 +245,7 @@ if (0) {
print("deleting call idx $call\n"); print("deleting call idx $call\n");
$msg = rtpengine_message_call('del_call', $call); $msg = rtpengine_message_call('del_call', $call);
$ret = syswrite(F, $msg) // '-'; $ret = syswrite($fh, $msg) // '-';
#print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n"); #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -278,7 +274,7 @@ if (0) {
print("deleting stream idx $stream->[1] (call $stream->[0])\n"); print("deleting stream idx $stream->[1] (call $stream->[0])\n");
$msg = rtpengine_message_stream('del_stream', $stream->[0], $stream->[1]); $msg = rtpengine_message_stream('del_stream', $stream->[0], $stream->[1]);
$ret = syswrite(F, $msg) // '-'; $ret = syswrite($fh, $msg) // '-';
#print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n"); #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -295,7 +291,7 @@ if (0) {
print("delivering a packet to $idx\n"); print("delivering a packet to $idx\n");
$msg = rtpengine_message_packet('packet', 0, $idx, 'packet data bla bla ' . rand() . "\n"); $msg = rtpengine_message_packet('packet', 0, $idx, 'packet data bla bla ' . rand() . "\n");
$ret = syswrite(F, $msg) // '-'; $ret = syswrite($fh, $msg) // '-';
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
sleep($sleep); sleep($sleep);
@ -316,7 +312,7 @@ if (0) {
print("creating call\n"); print("creating call\n");
$msg = rtpengine_message_call('add_call', 0, 'test call'); $msg = rtpengine_message_call('add_call', 0, 'test call');
$ret = sysread(F, $msg, length($msg)) // '-'; $ret = sysread($fh, $msg, length($msg)) // '-';
#print("reply: " . unpack("H*", $msg) . "\n"); #print("reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -330,7 +326,7 @@ sleep($sleep);
# print("creating identical call\n"); # print("creating identical call\n");
# #
# $msg = rtpengine_message_call('add_call', 0, 'test call'); # $msg = rtpengine_message_call('add_call', 0, 'test call');
# $ret = sysread(F, $msg, length($msg)) // '-'; # $ret = sysread($fh, $msg, length($msg)) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -344,7 +340,7 @@ sleep($sleep);
# print("creating other call\n"); # print("creating other call\n");
# #
# $msg = rtpengine_message_call('add_call', 0, 'another test call'); # $msg = rtpengine_message_call('add_call', 0, 'another test call');
# $ret = sysread(F, $msg, length($msg)) // '-'; # $ret = sysread($fh, $msg, length($msg)) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -359,7 +355,7 @@ for my $exp (0 .. 1000) {
print("creating a stream\n"); print("creating a stream\n");
$msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream ' . rand()); $msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream ' . rand());
$ret = sysread(F, $msg, length($msg)) // '-'; $ret = sysread($fh, $msg, length($msg)) // '-';
#print("reply: " . unpack("H*", $msg) . "\n"); #print("reply: " . unpack("H*", $msg) . "\n");
print("ret = $ret, code = $!\n"); print("ret = $ret, code = $!\n");
@ -373,7 +369,7 @@ for my $exp (0 .. 1000) {
# print("creating a stream\n"); # print("creating a stream\n");
# #
# $msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream'); # $msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream');
# $ret = sysread(F, $msg, length($msg)) // '-'; # $ret = sysread($fh, $msg, length($msg)) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -387,7 +383,7 @@ for my $exp (0 .. 1000) {
# print("creating identical stream\n"); # print("creating identical stream\n");
# #
# $msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream'); # $msg = rtpengine_message_stream('add_stream', $idx1, 0, 'test stream');
# $ret = sysread(F, $msg, length($msg)) // '-'; # $ret = sysread($fh, $msg, length($msg)) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -401,7 +397,7 @@ for my $exp (0 .. 1000) {
# print("creating different stream\n"); # print("creating different stream\n");
# #
# $msg = rtpengine_message_stream('add_stream', $idx3, 0, 'test stream'); # $msg = rtpengine_message_stream('add_stream', $idx3, 0, 'test stream');
# $ret = sysread(F, $msg, length($msg)) // '-'; # $ret = sysread($fh, $msg, length($msg)) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -413,7 +409,7 @@ for my $exp (0 .. 1000) {
# print("add 9876 -> 1234/6543\n"); # print("add 9876 -> 1234/6543\n");
# $ret = syswrite(F, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc, stream_idx => $sidx1, flags => 0x20)) // '-'; # $ret = syswrite($fh, rtpengine_message('add', local_addr => \@local, local_port => 9876, src_addr => \@src, src_port => 1234, dst_addr => \@dst, dst_port => 6543, tos => 184, decrypt => $dec, encrypt => $enc, stream_idx => $sidx1, flags => 0x20)) // '-';
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# sleep($sleep); # sleep($sleep);
@ -423,7 +419,7 @@ for my $exp (0 .. 1000) {
# print("delivering a packet\n"); # print("delivering a packet\n");
# #
# $msg = rtpengine_message_packet('packet', $idx1, $sidx1, 'packet data bla bla ' . rand() . "\n"); # $msg = rtpengine_message_packet('packet', $idx1, $sidx1, 'packet data bla bla ' . rand() . "\n");
# $ret = syswrite(F, $msg) // '-'; # $ret = syswrite($fh, $msg) // '-';
# #print("reply: " . unpack("H*", $msg) . "\n"); # #print("reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -436,7 +432,7 @@ for my $exp (0 .. 1000) {
# print("deleting stream\n"); # print("deleting stream\n");
# #
# $msg = rtpengine_message_stream('del_stream', $idx1, $sidx1, ''); # $msg = rtpengine_message_stream('del_stream', $idx1, $sidx1, '');
# $ret = syswrite(F, $msg) // '-'; # $ret = syswrite($fh, $msg) // '-';
# #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n"); # #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -447,7 +443,7 @@ for my $exp (0 .. 1000) {
# print("deleting call\n"); # print("deleting call\n");
# #
# $msg = rtpengine_message_call('del_call', $idx1, ''); # $msg = rtpengine_message_call('del_call', $idx1, '');
# $ret = syswrite(F, $msg) // '-'; # $ret = syswrite($fh, $msg) // '-';
# #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n"); # #print("ret = $ret, code = $!, reply: " . unpack("H*", $msg) . "\n");
# print("ret = $ret, code = $!\n"); # print("ret = $ret, code = $!\n");
# #
@ -456,4 +452,4 @@ for my $exp (0 .. 1000) {
close(F); close($fh);

@ -4,7 +4,7 @@ use warnings;
use strict; use strict;
use Socket; use Socket;
$| = 1; STDOUT->autoflush(1);
@ -28,11 +28,9 @@ sub mp_msg {
my $fd; my $fd;
socket($fd, AF_INET, SOCK_STREAM, 0) or die; socket($fd, AF_INET, SOCK_STREAM, 0) or die;
connect($fd, sockaddr_in(25060, inet_aton('127.0.0.1'))) or die; connect($fd, sockaddr_in(25060, inet_aton('127.0.0.1'))) or die;
my $old = select($fd); $fd->autoflush(1);
$| = 1; print { $fd } ("$cmd\n");
print("$cmd\n");
my $ret = <$fd>; my $ret = <$fd>;
select($old);
close($fd); close($fd);
chomp($ret); chomp($ret);
return $ret; return $ret;

@ -10,9 +10,6 @@ if ( ($num_args == 0) or
exit; exit;
} }
# auto-flush on socket
$| = 1;
my $argumentstring = ""; my $argumentstring = "";
my $ip = "127.0.0.1"; my $ip = "127.0.0.1";
my $port = "9900"; my $port = "9900";
@ -39,6 +36,8 @@ my $socket = new IO::Socket::INET (
); );
die "Cannot connect to the rtpengine $!\n" unless $socket; die "Cannot connect to the rtpengine $!\n" unless $socket;
$socket->autoflush(1);
#set send/recv timeout so script doesn't hang when rtpengine doesn't interact #set send/recv timeout so script doesn't hang when rtpengine doesn't interact
setsockopt($socket, SOL_SOCKET, SO_SNDTIMEO, pack('L!L!', 3, 0) ) or die $!; 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 $!; setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack('L!L!', 3, 0) ) or die $!;

@ -74,9 +74,9 @@ if (defined($options{sdp})) {
$packet{sdp} = $options{sdp}; $packet{sdp} = $options{sdp};
} }
elsif (defined($options{'sdp-file'})) { elsif (defined($options{'sdp-file'})) {
open(F, '<', $options{'sdp-file'}) or die $!; open(my $fh, '<', $options{'sdp-file'}) or die $!;
my @sdp = <F> or die $!; my @sdp = <$fh> or die $!;
close(F); close($fh);
$packet{sdp} = join('', @sdp); $packet{sdp} = join('', @sdp);
} }
#elsif (@ARGV && $ARGV[0] eq 'sdp') { #elsif (@ARGV && $ARGV[0] eq 'sdp') {

Loading…
Cancel
Save