diff options
author | Kamen Mazdrashki <kamen.mazdrashki@postpath.com> | 2010-01-06 13:40:33 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-01-06 14:26:32 +0100 |
commit | a2044b9a61d9c8ca66067b286ad9bc01cf0490b9 (patch) | |
tree | 49722ddf9dd7a40fa2a116773105044c04656e7a /source4/libcli/resolve | |
parent | f6bd654a6c878111f0f0f4d07adb644fc3bbf224 (diff) | |
download | samba-a2044b9a61d9c8ca66067b286ad9bc01cf0490b9.tar.gz samba-a2044b9a61d9c8ca66067b286ad9bc01cf0490b9.tar.bz2 samba-a2044b9a61d9c8ca66067b286ad9bc01cf0490b9.zip |
s4: Fix result check for getaddrinfo()
I think this completes commit 50feca550eed7828198b7c0fc5f0e5ddc863313d.
Now result should be handled correctly both for systems that
support EAI_NODATA but returns EAI_NONAME (as my Ubuntu 9.x)
and systems that doesn't support EAI_NODATA at all.
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/libcli/resolve')
-rw-r--r-- | source4/libcli/resolve/dns_ex.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 1b5037273a..79ed78340c 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -283,14 +283,19 @@ static void run_child_getaddrinfo(struct dns_ex_state *state, int fd) hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICSERV; ret = getaddrinfo(state->name.name, "0", &hints, &res_list); + /* try to fallback in case of error */ + if (state->do_fallback) { + switch (ret) { #ifdef EAI_NODATA - if (ret == EAI_NODATA && state->do_fallback) { -#else - if (ret == EAI_NONAME && state->do_fallback) { + case EAI_NODATA: #endif - /* getaddrinfo() doesn't handle CNAME records */ - run_child_dns_lookup(state, fd); - return; + case EAI_NONAME: + /* getaddrinfo() doesn't handle CNAME records */ + run_child_dns_lookup(state, fd); + return; + default: + break; + } } if (ret != 0) { goto done; |