summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/app_dial.c3
-rw-r--r--channels/chan_sip.c5
2 files changed, 7 insertions, 1 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 38d2bbd28..4f53eeba8 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1818,6 +1818,9 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
/* Again, keep going even if there's an error */
ast_debug(1, "ast call on peer returned %d\n", res);
ast_verb(3, "Couldn't call %s\n", numsubst);
+ if (tc->hangupcause) {
+ chan->hangupcause = tc->hangupcause;
+ }
ast_hangup(tc);
tc = NULL;
ast_free(tmp);
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e656fb795..d59339b2f 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4870,8 +4870,11 @@ static int sip_call(struct ast_channel *ast, char *dest, int timeout)
res = update_call_counter(p, INC_CALL_RINGING);
- if (res == -1)
+ if (res == -1) {
return res;
+ } else {
+ ast->hangupcause = AST_CAUSE_USER_BUSY;
+ }
p->callingpres = ast->cid.cid_pres;
p->jointcapability = ast_translate_available_formats(p->capability, p->prefcodec);