From: Mike Bradeen Date: Thu, 17 Apr 2025 15:50:21 +0000 (-0600) Subject: stasis/control.c: Set Hangup Cause to No Answer on Dial timeout X-Git-Tag: 21.9.0-rc1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=714aedde8b7656d5a8dbd6fe8b57d8391e953f66;p=thirdparty%2Fasterisk.git stasis/control.c: Set Hangup Cause to No Answer on Dial timeout Other Dial operations (dial, app_dial) use Q.850 cause 19 when a dial timeout occurs, but the Dial command via ARI did not set an explicit reason. This resulted in a CANCEL with Normal Call Clearing and corresponding ChannelDestroyed. This change sets the hangup cause to AST_CAUSE_NO_ANSWER to be consistent with the other operations. Fixes: #963 UserNote: A Dial timeout on POST /channels/{channelId}/dial will now result in a CANCEL and ChannelDestroyed with cause 19 / User alerting, no answer. Previously no explicit cause was set, resulting in a cause of 16 / Normal Call Clearing. (cherry picked from commit 4dc3ca4c9a4a339e14d1b2a042443176199ffd7a) --- diff --git a/res/stasis/control.c b/res/stasis/control.c index 78f4391d34..74ebccdda2 100644 --- a/res/stasis/control.c +++ b/res/stasis/control.c @@ -27,6 +27,7 @@ #include "asterisk/stasis_channels.h" #include "asterisk/stasis_app.h" +#include "asterisk/causes.h" #include "command.h" #include "control.h" @@ -1221,6 +1222,10 @@ struct ast_datastore_info timeout_datastore = { static int hangup_channel(struct stasis_app_control *control, struct ast_channel *chan, void *data) { + /* Set cause code to No Answer to be consistent with other dial timeout operations */ + ast_channel_lock(chan); + ast_channel_hangupcause_set(chan, AST_CAUSE_NO_ANSWER); + ast_channel_unlock(chan); ast_softhangup(chan, AST_SOFTHANGUP_EXPLICIT); return 0; }