Merged revisions 48966 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Tue, 26 Dec 2006 05:23:25 +0000 (05:23 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 26 Dec 2006 05:23:25 +0000 (05:23 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r48966 | file | 2006-12-26 00:20:08 -0500 (Tue, 26 Dec 2006) | 2 lines

Get rid of a needless memory allocation and only create a conference structure in find_conf_realtime if data was read from realtime. (issue #8669 reported by robl)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@48967 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_meetme.c

index 0a3e4a8..f719f8e 100644 (file)
@@ -1979,25 +1979,21 @@ static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char
                if (!strcmp(confno, cnf->confno)) 
                        break;
        }
-       if (cnf){
+       if (cnf) {
                cnf->refcount += refcount;
        }
        AST_LIST_UNLOCK(&confs);
 
        if (!cnf) {
                char *pin = NULL, *pinadmin = NULL; /* For temp use */
+               
+               var = ast_load_realtime("meetme", "confno", confno, NULL);
 
-               cnf = ast_calloc(1, sizeof(struct ast_conference));
-               if (!cnf) {
-                       ast_log(LOG_ERROR, "Out of memory\n");
+               if (!var)
                        return NULL;
-               }
 
-               var = ast_load_realtime("meetme", "confno", confno, NULL);
                while (var) {
-                       if (!strcasecmp(var->name, "confno")) {
-                               ast_copy_string(cnf->confno, var->value, sizeof(cnf->confno));
-                       } else if (!strcasecmp(var->name, "pin")) {
+                       if (!strcasecmp(var->name, "pin")) {
                                pin = ast_strdupa(var->value);
                        } else if (!strcasecmp(var->name, "adminpin")) {
                                pinadmin = ast_strdupa(var->value);
@@ -2005,7 +2001,7 @@ static struct ast_conference *find_conf_realtime(struct ast_channel *chan, char
                        var = var->next;
                }
                ast_variables_destroy(var);
-
+               
                cnf = build_conf(confno, pin ? pin : "", pinadmin ? pinadmin : "", make, dynamic, refcount);
        }