]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Blocked revisions 208622 via svnmerge
authorMark Michelson <mmichelson@digium.com>
Fri, 24 Jul 2009 19:40:57 +0000 (19:40 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 24 Jul 2009 19:40:57 +0000 (19:40 +0000)
........
  r208622 | mmichelson | 2009-07-24 14:24:28 -0500 (Fri, 24 Jul 2009) | 16 lines

  Don't impose an arbitrary limit on member lines in queues.conf

  I know what some of you are thinking: "UGH! Mark, why are you using
  ast_strdup and ast_free for the string when you can just use ast_strdupa
  and let the memory free itself?! Have the bats been chewing on your brain
  again?"

  Based on past experiences, I don't like using ast_strdupa inside a loop.
  It's a good way to potentially exhaust stack space. Also, since this only
  happens when reloading queues, I don't think that heap allocations and
  frees are going to be a huge problem.

  (closes issue #15559)
  Reported by: amorsen
........

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

apps/app_queue.c

index 71aa9e2d1856a0677d3fe34075e099702009f7eb..2fc317a64fd6c710c8bbe2c5962ca11fef5a320e 100644 (file)
@@ -5488,7 +5488,7 @@ static int reload_queues(int reload)
        struct ao2_iterator mem_iter;
        int new;
        const char *general_val = NULL;
-       char parse[80];
+       char *parse;
        char *interface, *state_interface;
        char *membername = NULL;
        int penalty;
@@ -5607,7 +5607,9 @@ static int reload_queues(int reload)
                                                }
 
                                                /* Add a new member */
-                                               ast_copy_string(parse, var->value, sizeof(parse));
+                                               if (!(parse = ast_strdup(var->value))) {
+                                                       continue;
+                                               }
                                                
                                                AST_STANDARD_APP_ARGS(args, parse);
 
@@ -5652,6 +5654,7 @@ static int reload_queues(int reload)
                                                else {
                                                        q->membercount++;
                                                }
+                                               ast_free(parse);
                                        } else {
                                                queue_set_param(q, var->name, var->value, var->lineno, 1);
                                        }