From 6c4b239a3a278a8e4aa1d5c6ac18d0894f997c44 Mon Sep 17 00:00:00 2001 From: Peter Schlaile Date: Sat, 25 Oct 2008 18:44:31 +0200 Subject: [PATCH] chan_lcr: Fixed automagic 's' extension and made pickup work. Last commit by Andreas changed matching semantics to make it possible to go directly into the dialplan _without_ dialing any digits by implicitly dialing the 's' extension. That is fine, if there is one to match :) If we do not find an implicit 's' extension, we will wait for more digits instead of hanging up immediately. (If you _really_ depended on that 'feature' please add s => { Hangup(); } :) Pickup: the pickup application can be used with PICKUPMARK to match a channel, that is in RINGING state. Unfortunately, one has to explicitly use ast_setstate() in addition to ast_queue_event() to convince asterisk to change the channel state... => Pickup works now. --- chan_lcr.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/chan_lcr.c b/chan_lcr.c index cfd3c61..1cf4656 100644 --- a/chan_lcr.c +++ b/chan_lcr.c @@ -703,6 +703,12 @@ static void lcr_start_pbx(struct chan_call *call, struct ast_channel *ast, int c return; } + if (!*ast->exten) { + /* if can match */ + CDEBUG(call, ast, "There is no 's' extension (and we tried to match it implicitly). Extensions may match, if more digits are dialed.\n"); + return; + } + /* if not match */ cause = 1; release: @@ -1495,6 +1501,7 @@ static int queue_send(void) case 'R': CDEBUG(call, ast, "Sending queued RINGING to Asterisk.\n"); ast_queue_control(ast, AST_CONTROL_RINGING); + ast_setstate(ast, AST_STATE_RINGING); break; case 'A': CDEBUG(call, ast, "Sending queued ANSWER to Asterisk.\n"); -- 2.13.6