aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorautomerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-08 00:25:46 +0000
committerautomerge <automerge@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-08 00:25:46 +0000
commitd0bf30bd6b1ce967d5738cb7b4862f4c3c73828b (patch)
treebc377a89c31eb161226ffea96f8e8c5ea3eb40a2
parent18fa782918afb311e8b05ef7126bb3369ef07dbe (diff)
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@68419 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--dnsmgr.c26
-rw-r--r--say.c24
2 files changed, 31 insertions, 19 deletions
diff --git a/dnsmgr.c b/dnsmgr.c
index 583811490..75fcdd830 100644
--- 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 459e181c9..a20e325af 100644
--- 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++;