FreePBX / issue-tracker

The unified FreePBX issue tracker.
https://www.freepbx.org
GNU General Public License v3.0
9 stars 1 forks source link

[bug]: macro-confirm exiting abnormally aborting calls #479

Open tognet opened 1 week ago

tognet commented 1 week ago

FreePBX Version

FreePBX 17

Issue Description

macro-confirm has at least a couple of easily reproducible ways in FPBX17+AST21 to unceremoniously abort a call when we should've come back out of it and gone to voicemail.

  1. Use call confirmation in any way (findme to external number w/ call confirm enabled). Have it ring to your external telephone number and answer there. Now hang up on the lady instead of pressing 1 or 2. Instead of the caller coming back around to voicemail, the call hangs up immediately with this in the ast console (see log output).

  2. in macro-confirm: exten => _X,n,GotoIf($[ ${LOOPCOUNT} < 5 ]?s,start:noanswer,1) is causing the same abnormal exit as above once LOOPCOUNT hits 5 which takes about 70 seconds or so.

  3. ALSO, just having that "loopcount < 5" in there is preventing my ring group from being able to ring w/ call confirm longer than 70 seconds. Ring groups are allowed to ring for 300 seconds. Enabling call confirm forcibly aborts my ring group call after ~65 seconds or so due to the loopcount < 5 in the macro.

Operating Environment

root@pbx:/etc/asterisk# uname -a Asterisk 21.4.3 built by jenkins @ b72d32d7ba88 on a x86_64 running Linux on 2024-09-06 10:58:41 UTC

Linux pbx.hostnameredacted 6.1.0-26-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.112-1 (2024-09-30) x86_64 GNU/Linux root@pbx:/etc/asterisk# cat /etc/debian_version 12.7

+---------------------+------------+-----------------------------------+------------+-----------+ | Module | Version | Status | License | Signature | +---------------------+------------+-----------------------------------+------------+-----------+ | accountcodepreserve | 17.0.0.1 | Enabled | GPLv2 | Sangoma | | adv_recovery | | Not Installed (Locally available) | Commercial | Sangoma | | allowlist | 17.0.1.1 | Enabled | GPLv3+ | Sangoma | | amd | 17.0.1 | Enabled | GPLv3+ | Sangoma | | announcement | 17.0.2.1 | Enabled | GPLv3+ | Sangoma | | api | 17.0.1.6 | Enabled | AGPLv3+ | Sangoma | | asterisk-cli | 17.0.2 | Enabled | GPLv3+ | Sangoma | | asteriskinfo | | Not Installed (Locally available) | GPLv3+ | Sangoma | | backup | 17.0.5.60 | Enabled | GPLv3+ | Sangoma | | blacklist | 17.0.1.2 | Enabled | GPLv3+ | Sangoma | | builtin | | Enabled | | Unsigned | | bulkhandler | 17.0.5 | Enabled | GPLv3+ | Sangoma | | calendar | 17.0.4.20 | Enabled | GPLv3+ | Sangoma | | callback | 17.0.2.1 | Enabled | GPLv3+ | Sangoma | | callforward | 17.0.1.6 | Enabled | AGPLv3+ | Sangoma | | callrecording | 17.0.3.7 | Enabled | AGPLv3+ | Sangoma | | callwaiting | 17.0.3.4 | Enabled | GPLv3+ | Sangoma | | cdr | 17.0.4.22 | Enabled | GPLv3+ | Sangoma | | cel | 17.0.2.9 | Enabled | GPLv3+ | Sangoma | | certman | 17.0.3.13 | Enabled | AGPLv3+ | Sangoma | | conferences | 17.0.3.2 | Enabled | GPLv3+ | Sangoma | | configedit | 17.0.1.4 | Enabled | AGPLv3+ | Sangoma | | contactmanager | 17.0.5.11 | Enabled | GPLv3+ | Sangoma | | core | 17.0.17 | Enabled | GPLv3+ | Sangoma | | customappsreg | 17.0.1 | Enabled | GPLv3+ | Sangoma | | customcontexts | 17.0.1.3 | Enabled | GPLv2+ | Sangoma | | dashboard | 17.0.4.5 | Enabled | AGPLv3+ | Sangoma | | daynight | 17.0.1.1 | Enabled | GPLv3+ | Sangoma | | dictate | 17.0.1.2 | Enabled | GPLv3+ | Sangoma | | directory | 17.0.1.1 | Enabled | GPLv3+ | Sangoma | | disa | 17.0.5 | Enabled | AGPLv3+ | Sangoma | | donotdisturb | 17.0.2.3 | Enabled | GPLv3+ | Sangoma | | dynroute | 17.0.3.2 | Enabled | GPLv3+ | Sangoma | | extensionsettings | 17.0.1 | Enabled | GPLv3+ | Sangoma | | fax | 17.0.3.4 | Enabled | GPLv3+ | Sangoma | | featurecodeadmin | 17.0.2 | Enabled | GPLv3+ | Sangoma | | filestore | 17.0.2.30 | Enabled | AGPLv3 | Sangoma | | findmefollow | 17.0.4.10 | Enabled | GPLv3+ | Sangoma | | firewall | 17.0.1.26 | Enabled | AGPLv3+ | Sangoma | | framework | 17.0.19.13 | Enabled | GPLv2+ | Sangoma | | hotelwakeup | 17.0.1.6 | Enabled | GPLv2 | Sangoma | | iaxsettings | 17.0.1 | Enabled | AGPLv3 | Sangoma | | infoservices | 17.0.1.1 | Enabled | GPLv2+ | Sangoma | | ivr | 17.0.8 | Enabled | GPLv3+ | Sangoma | | languages | 17.0.1 | Enabled | GPLv3+ | Sangoma | | logfiles | 17.0.3.3 | Enabled | GPLv3+ | Sangoma | | manager | 17.0.6 | Enabled | GPLv2+ | Sangoma | | miscapps | 17.0.3 | Enabled | GPLv3+ | Sangoma | | miscdests | 17.0.1.1 | Enabled | GPLv3+ | Sangoma | | missedcall | 17.0.1.2 | Enabled | GPLv3+ | Sangoma | | music | 17.0.5 | Enabled | GPLv3+ | Sangoma | | outcnam | 17.0.1 | Enabled | GPLv3+ | Sangoma | | outroutemsg | 17.0.1 | Enabled | GPLv3+ | Sangoma | | paging | 17.0.3 | Enabled | GPLv3+ | Sangoma | | parking | 17.0.2.5 | Enabled | GPLv3+ | Sangoma | | phpinfo | 17.0.1 | Enabled | GPLv2+ | Sangoma | | pinsets | 17.0.3.2 | Enabled | GPLv3+ | Sangoma | | pm2 | 17.0.3.3 | Enabled | AGPLv3+ | Sangoma | | pms | | Not Installed (Locally available) | Commercial | Sangoma | | presencestate | 17.0.2.4 | Enabled | GPLv3+ | Sangoma | | printextensions | 17.0.1.2 | Enabled | GPLv3+ | Sangoma | | queueprio | 17.0.1.4 | Enabled | GPLv3+ | Sangoma | | queues | 17.0.1.12 | Enabled | GPLv2+ | Sangoma | | recordings | 17.0.2.2 | Enabled | GPLv3+ | Sangoma | | restapps | | Not Installed (Locally available) | Commercial | Sangoma | | ringgroups | 17.0.2.6 | Enabled | GPLv3+ | Sangoma | | sangomaconnect | | Not Installed (Locally available) | Commercial | Sangoma | | sangomartapi | | Not Installed (Locally available) | Commercial | Sangoma | | setcid | 17.0.1.2 | Enabled | GPLv3+ | Sangoma | | sipsettings | 17.0.6.9 | Enabled | AGPLv3+ | Sangoma | | soundlang | 17.0.4.1 | Enabled | GPLv3+ | Sangoma | | sysadmin | 17.0.1.96 | Enabled | Commercial | Sangoma | | timeconditions | 17.0.1.18 | Enabled | GPLv3+ | Sangoma | | tts | 17.0.1.1 | Enabled | GPLv3+ | Sangoma | | ttsengines | 17.0.1 | Enabled | AGPLv3 | Sangoma | | ucp | 17.0.4.23 | Enabled | AGPLv3+ | Sangoma | | userman | 17.0.6.28 | Enabled | AGPLv3+ | Sangoma | | vmblast | 17.0.2 | Enabled | GPLv3+ | Sangoma | | voicemail | 17.0.5.22 | Enabled | GPLv3+ | Sangoma | | weakpasswords | 17.0.1 | Enabled | GPLv3+ | Sangoma | | webrtc | 17.0.2.2 | Enabled | GPLv3+ | Sangoma | +---------------------+------------+-----------------------------------+------------+-----------+

Relevant log output

[2024-10-07 11:56:20] WARNING[108054][C-00000019]: app_stack.c:1077 gosub_run: Local/FMGL-3055551212#@from-internal-0000001c;1 Abnormal 'Gosub(macro-auto-blkvm,s,1)' exit.  Popping routine return locations.
tognet commented 1 week ago

By the way, anyone who wants to fix the loopcount 5 in macro-confirm so your ring group can ring for longer than one minute with call confirm enabled, you can put this in extensions_override_freepbx.conf for now until it's worked on more officially:

[macro-confirm] exten => t,1,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" & "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1) exten => t,n,Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ]) exten => t,n,GotoIf($[ ${LOOPCOUNT} < 25 ]?s,start:noanswer,1)

exten => _X,1,Background(invalid,m,${CHANNEL(language)},macro-confirm) exten => _X,n,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" | "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1) exten => _X,n,Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ]) exten => _X,n,GotoIf($[ ${LOOPCOUNT} < 25 ]?s,start:noanswer,1)

tognet commented 10 hours ago

I tried an asterisk-version-switch to both asterisk20cert and asterisk18cert.

I confirm that macro-confirm still has the same reproducible "Abnormal 'Gosub(macro-auto-blkvm,s,1)' exit. Popping routine return locations." if you hang up on the call confirmation recording "press 1 to accept..."when it calls your external number. Caller's call is terminated instead of going to voicemail.