diff options
Diffstat (limited to 'libs/rpcd-mod-luci/src')
-rw-r--r-- | libs/rpcd-mod-luci/src/luci.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 5dc436164d..951de5c46d 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -1283,14 +1283,14 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) ptr.option = "ip"; ptr.o = NULL; - if (uci_lookup_ptr(uci, &ptr, NULL, true) || ptr.o == NULL) - continue; - - if (ptr.o->type != UCI_TYPE_STRING) - continue; + if (!uci_lookup_ptr(uci, &ptr, NULL, true) && ptr.o != NULL && + ptr.o->type != UCI_TYPE_STRING) + n = ptr.o->v.string; + else + n = NULL; - if (inet_pton(AF_INET, ptr.o->v.string, &in) != 1) - continue; + if (!n || inet_pton(AF_INET, n, &in) != 1) + in.s_addr = 0; ptr.option = "name"; ptr.o = NULL; @@ -1316,7 +1316,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) if (!hint) continue; - if (hint->ip.s_addr == 0) + if (hint->ip.s_addr == 0 && in.s_addr != 0) hint->ip = in; if (n && !hint->hostname) @@ -1330,7 +1330,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) if (!hint) continue; - if (hint->ip.s_addr == 0) + if (hint->ip.s_addr == 0 && in.s_addr != 0) hint->ip = in; if (n && !hint->hostname) |