- Joined
- Apr 29, 2024
- Messages
- 63
- Reaction score
- 10
Hi everyone,
We are experiencing an intermittent issue where inbound calls drop before the agent can answer. The agent is logged in, available, and answering other calls without any problem — but on some calls the phone rings and then drops by itself before the agent can pick up. Reports show "ended by caller" but our Wireshark capture proves otherwise.
System Info:
Provider → 3CX INVITE SDP (g711A g711U g729 iLBC g722 speex)
3CX → Provider 100 Trying
3CX → Provider 180 Ringing
3CX → Agent INVITE ← first INVITE sent to agent
Agent → 3CX 180 Ringing ← agent phone is ringing ✓
3CX → Agent CANCEL ← 3CX cancels its own INVITE after only 0.13 seconds
3CX → Agent INVITE SDP (g711U g711A g722 g729 opus) ← immediate re-INVITE with OPUS added
Agent → 3CX 200 OK
Agent → 3CX 487 Request Terminated
Agent → 3CX 180 Ringing ← still ringing on second INVITE
3CX → Agent CANCEL ← 3CX cancels second INVITE too
Provider → 3CX 200 OK
Agent → 3CX 481 Call/Transaction Does Not Exist ← transaction table broken
3CX → Agent BYE
3CX → Provider BYE ← call ends
Key observations:
We are experiencing an intermittent issue where inbound calls drop before the agent can answer. The agent is logged in, available, and answering other calls without any problem — but on some calls the phone rings and then drops by itself before the agent can pick up. Reports show "ended by caller" but our Wireshark capture proves otherwise.
System Info:
- 3CX Version: v20 Update 8 Build 1121
- Deployment: Self-hosted Linux
- Server: Meets 3CX specifications
- Firewall check: Passing
- Multiple device registrations — single active SIP session confirmed per agent
- Server hardware — migrated to larger server, issue persisted
- 3CX configuration — performed two full reinstalls, one with backup and one completely clean from scratch
- Queue wrap-up time — not enabled
- Accept multiple calls — unchecked on all extensions
- Call forwarding — no immediate forwarding rules configured
Provider → 3CX INVITE SDP (g711A g711U g729 iLBC g722 speex)
3CX → Provider 100 Trying
3CX → Provider 180 Ringing
3CX → Agent INVITE ← first INVITE sent to agent
Agent → 3CX 180 Ringing ← agent phone is ringing ✓
3CX → Agent CANCEL ← 3CX cancels its own INVITE after only 0.13 seconds
3CX → Agent INVITE SDP (g711U g711A g722 g729 opus) ← immediate re-INVITE with OPUS added
Agent → 3CX 200 OK
Agent → 3CX 487 Request Terminated
Agent → 3CX 180 Ringing ← still ringing on second INVITE
3CX → Agent CANCEL ← 3CX cancels second INVITE too
Provider → 3CX 200 OK
Agent → 3CX 481 Call/Transaction Does Not Exist ← transaction table broken
3CX → Agent BYE
3CX → Provider BYE ← call ends
Key observations:
- The CANCEL fires only 0.13 seconds after receiving 180 Ringing — this is too fast for any timeout or queue rule. It is an internal 3CX processing event.
- The second INVITE has a different codec order and adds OPUS which was not in the original provider INVITE — possible SDP renegotiation triggering the re-fork.
- All of this is happening on loopback 127.0.0.1 — entirely inside 3CX, nothing from the provider or agent side is causing it.
- The 481 confirms 3CX internal SIP transaction table is out of sync after the duplicate CANCEL and cannot recover.
- Has anyone seen 3CX internally cancelling its own INVITE within milliseconds of receiving 180 Ringing on the agent leg?
- Could the codec renegotiation between the first and second INVITE be causing 3CX to cancel and re-fork the agent leg?
- Is there a way to force a fixed codec list to prevent this SDP mismatch on the internal leg?
- Any known workaround for Build 1121 while waiting for a stable fix?