mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
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.
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "asterisk/stasis_channels.h"
|
#include "asterisk/stasis_channels.h"
|
||||||
#include "asterisk/stasis_app.h"
|
#include "asterisk/stasis_app.h"
|
||||||
|
#include "asterisk/causes.h"
|
||||||
|
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "control.h"
|
#include "control.h"
|
||||||
@@ -1221,6 +1222,10 @@ struct ast_datastore_info timeout_datastore = {
|
|||||||
static int hangup_channel(struct stasis_app_control *control,
|
static int hangup_channel(struct stasis_app_control *control,
|
||||||
struct ast_channel *chan, void *data)
|
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);
|
ast_softhangup(chan, AST_SOFTHANGUP_EXPLICIT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user