]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge Script <automerge@asterisk.org>
Fri, 8 Jun 2007 00:25:46 +0000 (00:25 +0000)
committerAutomerge Script <automerge@asterisk.org>
Fri, 8 Jun 2007 00:25:46 +0000 (00:25 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@68419 65c4cc65-6c06-0410-ace0-fbb531ad65f3

dnsmgr.c
say.c

index 58381149058745ea8dfca4ac2011b5101b026ed0..75fcdd830051f097bb66caa5904058862f1a40c0 100644 (file)
--- a/dnsmgr.c
+++ b/dnsmgr.c
@@ -112,6 +112,9 @@ void ast_dnsmgr_release(struct ast_dnsmgr_entry *entry)
 
 int ast_dnsmgr_lookup(const char *name, struct in_addr *result, struct ast_dnsmgr_entry **dnsmgr)
 {
+       struct ast_hostent ahp;
+       struct hostent *hp;
+
        if (ast_strlen_zero(name) || !result || !dnsmgr)
                return -1;
 
@@ -126,21 +129,18 @@ int ast_dnsmgr_lookup(const char *name, struct in_addr *result, struct ast_dnsmg
        if (inet_aton(name, result))
                return 0;
 
-       /* if the manager is disabled, do a direct lookup and return the result,
-          otherwise register a managed lookup for the name */
-       if (!enabled) {
-               struct ast_hostent ahp;
-               struct hostent *hp;
+       /* do a lookup now but add a manager so it will automagically get updated in the background */
+       if ((hp = ast_gethostbyname(name, &ahp)))
+               memcpy(result, hp->h_addr, sizeof(result));
 
-               if ((hp = ast_gethostbyname(name, &ahp)))
-                       memcpy(result, hp->h_addr, sizeof(result));
+       /* if dnsmgr is not enable don't bother adding an entry */
+       if (!enabled)
                return 0;
-       } else {
-               if (option_verbose > 2)
-                       ast_verbose(VERBOSE_PREFIX_2 "adding manager for '%s'\n", name);
-               *dnsmgr = ast_dnsmgr_get(name, result);
-               return !*dnsmgr;
-       }
+       
+       if (option_verbose > 2)
+               ast_verbose(VERBOSE_PREFIX_2 "adding manager for '%s'\n", name);
+       *dnsmgr = ast_dnsmgr_get(name, result);
+       return !*dnsmgr;
 }
 
 static void *do_refresh(void *data)
diff --git a/say.c b/say.c
index 459e181c988c695dc9bfc6907e2d7fa884a8dc95..a20e325af200b7076abc8d260231ad0451f018f4 100644 (file)
--- a/say.c
+++ b/say.c
@@ -120,8 +120,12 @@ int ast_say_character_str_full(struct ast_channel *chan, const char *str, const
                        fn = fnbuf;
                }
                res = ast_streamfile(chan, fn, lang);
-               if (!res) 
-                       res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+               if (!res) {
+                       if ((audiofd  > -1) && (ctrlfd > -1))
+                               res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+                       else
+                               res = ast_waitstream(chan, ints);
+               }
                ast_stopstream(chan);
                num++;
        }
@@ -199,8 +203,12 @@ int ast_say_phonetic_str_full(struct ast_channel *chan, const char *str, const c
                        fn = fnbuf;
                }
                res = ast_streamfile(chan, fn, lang);
-               if (!res) 
-                       res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+               if (!res) {
+                       if ((audiofd  > -1) && (ctrlfd > -1))
+                               res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+                       else
+                               res = ast_waitstream(chan, ints);
+               }
                ast_stopstream(chan);
                num++;
        }
@@ -249,8 +257,12 @@ int ast_say_digit_str_full(struct ast_channel *chan, const char *str, const char
                }
                if (fn) {
                        res = ast_streamfile(chan, fn, lang);
-                       if (!res) 
-                               res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+                       if (!res) {
+                               if ((audiofd  > -1) && (ctrlfd > -1))
+                                        res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
+                                else
+                                        res = ast_waitstream(chan, ints);
+                       }
                        ast_stopstream(chan);
                }
                num++;