ds-lite: fix resolve retry for fqdn peeraddrs

If the first resolveip call will fail, peeraddr will be now empty, and
the subsequent resolveip call will try to resolve an empty string.

Fix this by storing the result in a temporary variable.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 45712
This commit is contained in:
Jonas Gorski 2015-05-22 10:24:30 +00:00
parent 76d079204d
commit 5caa23551e
2 changed files with 7 additions and 6 deletions

View file

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ds-lite
PKG_VERSION:=6
PKG_VERSION:=7
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0

View file

@ -13,6 +13,7 @@ proto_dslite_setup() {
local cfg="$1"
local iface="$2"
local link="ds-$cfg"
local remoteip6
local mtu ttl peeraddr ip6addr tunlink zone weakif
json_get_vars mtu ttl peeraddr ip6addr tunlink zone weakif
@ -25,16 +26,16 @@ proto_dslite_setup() {
( proto_add_host_dependency "$cfg" "::" "$tunlink" )
peeraddr=$(resolveip -6 $peeraddr)
if [ -z "$peeraddr" ]; then
remoteip6=$(resolveip -6 $peeraddr)
if [ -z "$remoteip6" ]; then
sleep 3
peeraddr=$(resolveip -6 $peeraddr)
if [ -z "$peeraddr" ]; then
remoteip6=$(resolveip -6 $peeraddr)
if [ -z "$remoteip6" ]; then
proto_notify_error "$cfg" "AFTR_DNS_FAIL"
return
fi
fi
peeraddr="${peeraddr%% *}"
peeraddr="${remoteip6%% *}"
[ -z "$ip6addr" ] && {
local wanif="$tunlink"