diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-14 17:23:51 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-14 17:23:51 +0000 |
commit | 926ee43df73ed91e7f1448b207660de9473f5bba (patch) | |
tree | f17e60663eea6c952df831fc378b26e965d7cb6b /main | |
parent | 504ef4a3a32a59a0c5663737c374a4642ae5f42f (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.c | 5 |
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; } |