Skip to content

No MOH played to a-leg after uuid_hold | V1.10.12 #2957

@idanah24

Description

@idanah24

No RTP/MOH sent to caller after uuid_hold despite correct SDP negotiation

Environment
FreeSWITCH Version: 1.10.12 64bit

Scenario
Inbound call controlled via ESL

Description
When placing an inbound call on hold using uuid_hold, FreeSWITCH generates correct SDP with a=sendonly and the remote party responds with a=recvonly, but no RTP packets are sent to the caller. MOH does not play despite the audio pipeline activating.

Steps to Reproduce

  • Incoming SIP call arrives at FreeSWITCH
  • Dialplan executes park() application
  • External ESL application executes answer application
  • ESL application executes uuid_hold command

Expected Behavior

  • FreeSWITCH sends re-INVITE with a=sendonly
  • Remote party responds with 200 OK containing a=recvonly
  • FreeSWITCH sends RTP packets containing MOH audio to caller
  • Caller hears music on hold

Actual Behavior

  • FreeSWITCH sends re-INVITE with a=sendonly ✅
  • Remote party responds with 200 OK containing a=recvonly ✅
  • MOH audio pipeline activates (Codec Activated L16@8000hz) ✅
  • No RTP packets are sent to caller ❌
  • Caller hears silence instead of MOH ❌

FreeSWITCH Console Log
`2025-11-26 17:29:02.702651 [NOTICE] switch_channel.c:1142 New Channel sofia/external/5301@ [faa4f737-7042-42ff-a9c8-1f8b46075fcb]
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:581 (sofia/external/5301@) Running State Change CS_NEW (Cur 1 Tot 10)
2025-11-26 17:29:02.702651 [INFO] sofia.c:10460 sofia/external/5301@ receiving invite from :5060 version: 1.10.12 a88d069 64bit call-id: 494065758322021203733@
2025-11-26 17:29:02.702651 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [received][100]
2025-11-26 17:29:02.702651 [DEBUG] sofia.c:7503 Remote SDP:
v=0
o=- 1011237329 565521201 IN IP4
s=Asterisk
c=IN IP4
t=0 0
m=audio 45610 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150

2025-11-26 17:29:02.702651 [DEBUG] sofia.c:7906 (sofia/external/5301@) State Change CS_NEW -> CS_INIT
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:600 (sofia/external/5301@) State NEW
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:581 (sofia/external/5301@) Running State Change CS_INIT (Cur 1 Tot 10)
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:624 (sofia/external/5301@) State INIT
2025-11-26 17:29:02.702651 [DEBUG] mod_sofia.c:97 sofia/external/5301@ SOFIA INIT
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:40 sofia/external/5301@ Standard INIT
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:48 (sofia/external/5301@) State Change CS_INIT -> CS_ROUTING
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:624 (sofia/external/5301@) State INIT going to sleep
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:581 (sofia/external/5301@) Running State Change CS_ROUTING (Cur 1 Tot 10)
2025-11-26 17:29:02.702651 [DEBUG] switch_channel.c:2399 (sofia/external/5301@) Callstate Change DOWN -> RINGING
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:640 (sofia/external/5301@) State ROUTING
2025-11-26 17:29:02.702651 [DEBUG] mod_sofia.c:158 sofia/external/5301@ SOFIA ROUTING
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:230 sofia/external/5301@ Standard ROUTING
2025-11-26 17:29:02.702651 [INFO] mod_dialplan_xml.c:639 Processing 5301 <5301>->7777 in context public
Dialplan: sofia/external/5301@ parsing [public->socket_outbound] continue=false
Dialplan: sofia/external/5301@ Regex (PASS) [socket_outbound] destination_number(7777) =~ /^(.*)$/ break=on-false
Dialplan: sofia/external/5301@ Action park()
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:281 (sofia/external/5301@) State Change CS_ROUTING -> CS_EXECUTE
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:640 (sofia/external/5301@) State ROUTING going to sleep
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:581 (sofia/external/5301@) Running State Change CS_EXECUTE (Cur 1 Tot 10)
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:647 (sofia/external/5301@) State EXECUTE
2025-11-26 17:29:02.702651 [DEBUG] mod_sofia.c:213 sofia/external/5301@ SOFIA EXECUTE
2025-11-26 17:29:02.702651 [DEBUG] switch_core_state_machine.c:323 sofia/external/5301@ Standard EXECUTE
EXECUTE [depth=0] sofia/external/5301@ park()
2025-11-26 17:29:03.162072 [DEBUG] switch_ivr.c:632 sofia/external/5301@ Command Execute [depth=0] answer()
EXECUTE [depth=0] sofia/external/5301@ answer()
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5526 Audio Codec Compare [PCMU:0:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5526 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5588 Audio Codec Compare [PCMA:8:8000:20:64000:1] ++++ is saved as a match
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5438 Set telephone-event payload to 101@8000
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:3731 Set Codec sofia/external/5301@ PCMA/8000 20 ms 160 samples 64000 bits 1 channels
2025-11-26 17:29:03.162072 [DEBUG] switch_core_codec.c:111 sofia/external/5301@ Original read codec set to PCMA:8
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5798 Set telephone-event payload to 101@8000
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:5856 sofia/external/5301@ Set 2833 dtmf send payload to 101 recv payload to 101
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:8660 AUDIO RTP [sofia/external/5301@] port 25160 -> port 45610 codec: 8 ms: 20
2025-11-26 17:29:03.162072 [DEBUG] switch_rtp.c:4566 Starting timer [soft] 160 bytes per 20ms
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:8973 sofia/external/5301@ Set 2833 dtmf send payload to 101
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:8980 sofia/external/5301@ Set 2833 dtmf receive payload to 101
2025-11-26 17:29:03.162072 [DEBUG] switch_core_media.c:9003 sofia/external/5301@ Set rtp dtmf delay to 40
2025-11-26 17:29:03.162072 [NOTICE] sofia_media.c:90 Pre-Answer sofia/external/5301@!
2025-11-26 17:29:03.162072 [DEBUG] switch_channel.c:3585 (sofia/external/5301@) Callstate Change RINGING -> EARLY
2025-11-26 17:29:03.172097 [DEBUG] switch_core_media.c:8642 Audio params are unchanged for sofia/external/5301@.
2025-11-26 17:29:03.172097 [DEBUG] mod_sofia.c:914 Local SDP sofia/external/5301@:
v=0
o=FreeSWITCH 1764181783 1764181784 IN IP4
s=FreeSWITCH
c=IN IP4
t=0 0
m=audio 25160 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=sendrecv

2025-11-26 17:29:03.172097 [NOTICE] mod_dptools.c:1406 Channel [sofia/external/5301@] has been answered
2025-11-26 17:29:03.172097 [DEBUG] switch_channel.c:3912 (sofia/external/5301@) Callstate Change EARLY -> ACTIVE
2025-11-26 17:29:03.172097 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [completed][200]
2025-11-26 17:29:03.232074 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [ready][200]
2025-11-26 17:29:03.252073 [DEBUG] switch_rtp.c:7698 Correct audio ip/port confirmed.

--- uuid_hold executed here ---

2025-11-26 17:29:03.302075 [DEBUG] switch_channel.c:1994 (sofia/external/5301@) Callstate Change ACTIVE -> HELD
2025-11-26 17:29:03.302075 [INFO] sofia_glue.c:1659 sofia/external/5301@ sending invite call-id: (null)
2025-11-26 17:29:03.302075 [DEBUG] sofia_glue.c:1662 sofia/external/5301@ sending invite version: 1.10.12 a88d069 64bit
Local SDP:
v=0
o=FreeSWITCH 1764181783 1764181785 IN IP4
s=FreeSWITCH
c=IN IP4
t=0 0
m=audio 25160 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=sendrecv

2025-11-26 17:29:03.332075 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [calling][0]
2025-11-26 17:29:03.352088 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [completing][200]
2025-11-26 17:29:03.352088 [DEBUG] sofia.c:7503 Remote SDP:
v=0
o=- 1011237329 565521202 IN IP4
s=Asterisk
c=IN IP4
t=0 0
m=audio 45610 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=recvonly
a=ptime:20
a=maxptime:150

2025-11-26 17:29:03.372075 [DEBUG] sofia.c:7493 Channel sofia/external/5301@ entering state [ready][200]
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:5526 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:5588 Audio Codec Compare [PCMA:8:8000:20:64000:1] ++++ is saved as a match
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:5438 Set telephone-event payload to 101@8000
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:5798 Set telephone-event payload to 101@8000
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:5856 sofia/external/5301@ Set 2833 dtmf send payload to 101 recv payload to 101
2025-11-26 17:29:03.372075 [DEBUG] switch_core_media.c:8642 Audio params are unchanged for sofia/external/5301@.`

Observed Issues
SDP shows a=sendrecv instead of a=sendonly: After uuid_hold is executed, the re-INVITE sent to the remote party contains a=sendrecv instead of the expected a=sendonly
No RTP transmission: Despite the remote party correctly responding with a=recvonly, FreeSWITCH does not send any RTP packets
MOH pipeline activates but no audio: When attempting to execute uuid_broadcast after uuid_hold, logs show the MOH codec activates successfully, but no audio is transmitted

Additional Information
Also attempted to execute 'playback' or ''uuid_broadcast' after channel is held, but no music is played
Packet captures confirm zero RTP packets are transmitted from FreeSWITCH to the caller during hold
The same MOH stream works correctly in other scenarios (e.g., when used without hold)
The issue is reproducible 100% of the time with the described workflow

I have been struggling with this issue for quite a while, please let me know if there is any more information needed here.

Your help is very much appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions