aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-01 15:05:43 +0000
committerjpeeler <jpeeler@f38db490-d61c-443f-a65b-d21fe96a405b>2010-07-01 15:05:43 +0000
commit635567d558089cc9c977f13beaec841bbc4b9ddc (patch)
treefea83f86635966b9ce939be57882ec109d28b8d5 /apps
parent267f038a9a7e29c0433d84ff9c269463a8e445ff (diff)
Ensure channel placed in meetme in ringing state is properly hung up.
An outgoing channel placed in meetme while still ringing which was then hung up would not exit meetme and the channel was not properly destroyed. Specifically checking for this scenario by looking at the appropriate control frames resolves the issue. (closes issue #15871) Reported by: Ivan Patches: meetme_congestion_trunk_v2.patch uploaded by Ivan (license 229) git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@273354 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r--apps/app_meetme.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 5fed964d8..a13844e9a 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -2322,6 +2322,20 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
}
} else if (f->frametype == AST_FRAME_NULL) {
/* Ignore NULL frames. It is perfectly normal to get these if the person is muted. */
+ } else if (f->frametype == AST_FRAME_CONTROL) {
+ switch (f->subclass) {
+ case AST_CONTROL_BUSY:
+ case AST_CONTROL_CONGESTION:
+ ast_frfree(f);
+ goto outrun;
+ break;
+ default:
+ if (option_debug) {
+ ast_log(LOG_DEBUG,
+ "Got ignored control frame on channel %s, f->frametype=%d,f->subclass=%d\n",
+ chan->name, f->frametype, f->subclass);
+ }
+ }
} else if (option_debug) {
ast_log(LOG_DEBUG,
"Got unrecognized frame on channel %s, f->frametype=%d,f->subclass=%d\n",