Author: murf
Date: Wed Jul 25 20:13:07 2007
New Revision: 77217

URL: http://svn.digium.com/view/asterisk?view=rev&rev=77217
Log:
Merged revisions 77191 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77191 | murf | 2007-07-25 16:39:27 -0600 (Wed, 25 Jul 2007) | 1 line

This fix solves problem with intense squelch noise when someone joins conf in 
bug 9430; We repro'd the problem with meetme opts of 'CciMo'; Josh Colp 
supplied this patch, and I'm applying it. It looks like playing the recorded 
username will louse up the next thing played into the channel. Josh rearranged 
the code so as to start things over before playing data directly into the 
conference.
........

Modified:
    trunk/apps/app_meetme.c

Modified: trunk/apps/app_meetme.c
URL: 
http://svn.digium.com/view/asterisk/trunk/apps/app_meetme.c?view=diff&rev=77217&r1=77216&r2=77217
==============================================================================
--- trunk/apps/app_meetme.c (original)
+++ trunk/apps/app_meetme.c Wed Jul 25 20:13:07 2007
@@ -786,38 +786,45 @@
        ast_copy_string(cnf->pin, pin, sizeof(cnf->pin));
        ast_copy_string(cnf->pinadmin, pinadmin, sizeof(cnf->pinadmin));
        ast_copy_string(cnf->uniqueid, chan->uniqueid, sizeof(cnf->uniqueid));
+
+       /* Setup a new zap conference */
+       ztc.confno = -1;
+       ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
+       cnf->fd = open("/dev/zap/pseudo", O_RDWR);
+       if (cnf->fd < 0 || ioctl(cnf->fd, ZT_SETCONF, &ztc)) {
+               ast_log(LOG_WARNING, "Unable to open pseudo device\n");
+               if (cnf->fd >= 0)
+                       close(cnf->fd);
+               free(cnf);
+               cnf = NULL;
+               goto cnfout;
+       }
+
+       cnf->zapconf = ztc.confno;
+
+       /* Setup a new channel for playback of audio files */
        cnf->chan = ast_request("zap", AST_FORMAT_SLINEAR, "pseudo", NULL);
        if (cnf->chan) {
                ast_set_read_format(cnf->chan, AST_FORMAT_SLINEAR);
                ast_set_write_format(cnf->chan, AST_FORMAT_SLINEAR);
-               cnf->fd = cnf->chan->fds[0];    /* for use by conf_play() */
-       } else {
-               ast_log(LOG_WARNING, "Unable to open pseudo channel - trying 
device\n");
-               cnf->fd = open("/dev/zap/pseudo", O_RDWR);
-               if (cnf->fd < 0) {
-                       ast_log(LOG_WARNING, "Unable to open pseudo device\n");
+               ztc.chan = 0;
+               ztc.confno = cnf->zapconf;
+               ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
+               if (ioctl(cnf->chan->fds[0], ZT_SETCONF, &ztc)) {
+                       ast_log(LOG_WARNING, "Error setting conference\n");
+                       if (cnf->chan)
+                               ast_hangup(cnf->chan);
+                       else
+                               close(cnf->fd);
+
                        ast_free(cnf);
                        cnf = NULL;
                        goto cnfout;
                }
        }
-       
-       /* Setup a new zap conference */
-       ztc.confno = -1;
-       ztc.confmode = ZT_CONF_CONFANN | ZT_CONF_CONFANNMON;
-       if (ioctl(cnf->fd, ZT_SETCONF, &ztc)) {
-               ast_log(LOG_WARNING, "Error setting conference\n");
-               if (cnf->chan)
-                       ast_hangup(cnf->chan);
-               else
-                       close(cnf->fd);
-               ast_free(cnf);
-               cnf = NULL;
-               goto cnfout;
-       }
+
        /* Fill the conference struct */
        cnf->start = time(NULL);
-       cnf->zapconf = ztc.confno;
        cnf->isdynamic = dynamic ? 1 : 0;
        if (option_verbose > 2)
                ast_verbose(VERBOSE_PREFIX_3 "Created MeetMe conference %d for 
conference '%s'\n", cnf->zapconf, cnf->confno);
@@ -2404,8 +2411,10 @@
        );
 
        /* Check first in the conference list */
+       ast_log(LOG_NOTICE,"The requested confno is '%s'?\n", confno);
        AST_LIST_LOCK(&confs);
        AST_LIST_TRAVERSE(&confs, cnf, list) {
+               ast_log(LOG_NOTICE,"Does conf %s match %s?\n", confno, 
cnf->confno);
                if (!strcmp(confno, cnf->confno)) 
                        break;
        }
@@ -2443,6 +2452,7 @@
                                        return NULL;
                                
                                AST_NONSTANDARD_APP_ARGS(args, parse, ',');
+                               ast_log(LOG_NOTICE,"Will conf %s match %s?\n", 
confno, args.confno);
                                if (!strcasecmp(args.confno, confno)) {
                                        /* Bingo it's a valid conference */
                                        cnf = build_conf(args.confno,


_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to