This commit is contained in:
garnier-quentin 2019-07-10 14:45:47 +02:00
parent d0e8f2ae5e
commit bf74939353
1 changed files with 17 additions and 5 deletions

View File

@ -124,7 +124,11 @@ sub read_ami_protocol_end {
if ($options{response} eq 'Follows') { if ($options{response} eq 'Follows') {
return 1 if ($options{message} =~ /^--END COMMAND--/ms); return 1 if ($options{message} =~ /^--END COMMAND--/ms);
} else { } else {
return 1 if ($options{message} =~ /^Message: (.*)(\r\n)/ms); if ($options{message} =~ /^Message:\s+Command\s+output\s+follows/i) {
return 1 if ($options{message} =~ /\n\n/ms);
} elsif ($options{message} =~ /^Message: (.*)(\n)/ms) {
return 1;
}
} }
} }
@ -135,13 +139,20 @@ sub read_ami_protocol {
my ($self, %options) = @_; my ($self, %options) = @_;
my $select = IO::Select->new($self->{cnx_ami}); my $select = IO::Select->new($self->{cnx_ami});
# Two types of message: # Three types of message:
# Response: Error # Response: Error
# Message: Authentication failed # Message: Authentication failed
# #
# Response: Follows # Response: Follows
# ... # ...
# --END COMMAND-- # --END COMMAND--
#
# Response: Success
# Message: Command output follows
# output: xxxx
# output: xxxx
# ...
#
my ($response, $read_msg); my ($response, $read_msg);
my $message = ''; my $message = '';
@ -152,8 +163,9 @@ sub read_ami_protocol {
} }
my $status = $self->{cnx_ami}->recv($read_msg, 4096); my $status = $self->{cnx_ami}->recv($read_msg, 4096);
$read_msg =~ s/\r//msg;
if (!defined($response)) { if (!defined($response)) {
next if ($read_msg !~ /^Response: (.*?)(?:\r\n|\n)(.*)/ms); next if ($read_msg !~ /^Response: (.*?)(?:\n)(.*)/ms);
($response, $message) = ($1, $2); ($response, $message) = ($1, $2);
} else { } else {
$message .= $read_msg; $message .= $read_msg;
@ -162,7 +174,7 @@ sub read_ami_protocol {
last if ($self->read_ami_protocol_end(response => $response, message => $message)); last if ($self->read_ami_protocol_end(response => $response, message => $message));
} }
$message =~ s/\r//msg; $message =~ s/^Output:\s+//mig;
if ($response !~ /Success|Follows/) { if ($response !~ /Success|Follows/) {
$message =~ s/\n+$//msg; $message =~ s/\n+$//msg;
$message =~ s/\n/ -- /msg; $message =~ s/\n/ -- /msg;