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.
#include "asterisk/stasis_channels.h"
#include "asterisk/stasis_app.h"
+#include "asterisk/causes.h"
#include "command.h"
#include "control.h"
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;
}