]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 273355 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Thu, 1 Jul 2010 15:14:41 +0000 (15:14 +0000)
committerJeff Peeler <jpeeler@digium.com>
Thu, 1 Jul 2010 15:14:41 +0000 (15:14 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r273355 | jpeeler | 2010-07-01 10:12:31 -0500 (Thu, 01 Jul 2010) | 19 lines

  Merged revisions 273354 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r273354 | jpeeler | 2010-07-01 10:05:43 -0500 (Thu, 01 Jul 2010) | 12 lines

    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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@273356 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index 5fe842447150734ea7fa9b7fe1b521b568b886c4..d2ff16da1e1ac89444bb595f45b42a96e85935ed 100644 (file)
@@ -3170,6 +3170,18 @@ 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:
+                                               ast_debug(1, 
+                                                       "Got ignored control frame on channel %s, f->frametype=%d,f->subclass=%d\n",
+                                                       chan->name, f->frametype, f->subclass);
+                                       }
                                } else {
                                        ast_debug(1, 
                                                "Got unrecognized frame on channel %s, f->frametype=%d,f->subclass=%d\n",