aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-14 17:23:51 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-05-14 17:23:51 +0000
commit926ee43df73ed91e7f1448b207660de9473f5bba (patch)
treef17e60663eea6c952df831fc378b26e965d7cb6b /main
parent504ef4a3a32a59a0c5663737c374a4642ae5f42f (diff)
Fix scenario where if a phone that simply called Echo() put itself on hold it could never get off hold.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@64240 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/channel.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/main/channel.c b/main/channel.c
index f7e0df9b0..093296b31 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -2726,8 +2726,11 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
res = ast_senddigit_end(chan, fr->subclass, fr->len);
ast_channel_lock(chan);
CHECK_BLOCKING(chan);
+ } else if (fr->frametype == AST_FRAME_CONTROL && fr->subclass == AST_CONTROL_UNHOLD) {
+ /* This is a side case where Echo is basically being called and the person put themselves on hold and took themselves off hold */
+ res = (chan->tech->indicate == NULL) ? 0 :
+ chan->tech->indicate(chan, fr->subclass, fr->data, fr->datalen);
}
-
res = 0; /* XXX explain, why 0 ? */
goto done;
}