signalwire / freeswitch

FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.
https://freeswitch.com/#getting-started
Other
3.54k stars 1.41k forks source link

fixed eavesdrop channel management via ESL #2429

Open sergey-safarov opened 5 months ago

sergey-safarov commented 5 months ago

The current switch_ivr_eavesdrop_session implementation does not call switch_ivr_parse_all_events and leads to the case when executing eavesdrop application blocks any command execution sent via ESL.

This PR fix this. I have tested locally.

signalwire-ci[bot] commented 5 months ago

Unit-tests failed: https://public-artifacts.signalwire.cloud/drone/signalwire/freeswitch/1707/artifacts.html

sergey-safarov commented 5 months ago

The issue can be reproduced using this test script

#!/bin/perl

use ESL;

my $uuid = shift;
my $args = join(" ", @ARGV);

my $con = new ESL::ESLconnection("127.0.0.1", "8021", "ClueCon");

my $e = $con->execute('info', '', $uuid);

need to call the script using commands like

./test.pl a0aac03e-0956-4adc-82b5-08a19b6155be

Without this patch, the channel variables will not printed with the active eavesdrop application. With this patch channel variables will be printed into the FreeSwitch log.