net/mwan3: fixup parse json_load an null message
authorKyson Lok <kysonlok@gmail.com>
Wed, 6 Jun 2018 11:07:20 +0000 (19:07 +0800)
committerFlorian Eckert <fe@dev.tdt.de>
Fri, 12 Oct 2018 06:13:42 +0000 (08:13 +0200)
If a interface is down, call ubus will return an null message which is
used to json_load, it causes json_get_vars gets value from last load and
l3_device various is nonzero.

Signed-off-by: Kyson Lok <kysonlok@gmail.com>
net/mwan3/files/usr/sbin/mwan3

index 406804b30799a20b81843df19c55c411e0854d7a..4ad3bc3910655e423ab706e11f59befc6d160776 100755 (executable)
@@ -43,7 +43,7 @@ ifdown()
 
 ifup()
 {
-       local device enabled up l3_device
+       local device enabled up l3_device status
 
        config_load mwan3
        config_get_bool enabled globals 'enabled' 0
@@ -67,13 +67,18 @@ ifup()
                exit 0
        }
 
-       json_load $(ubus -S call network.interface.$1 status)
-       json_get_vars up l3_device
+       status=$(ubus -S call network.interface.$1 status)
+       [ -n "$status" ] && {
+               json_load $status
+               json_get_vars up l3_device 
+       }
+
        config_get enabled "$1" enabled 0
 
-       if [ "$up" -eq 1 ] \
+
+       if [ "$up" = "1" ] \
                && [ -n "$l3_device" ] \
-               && [ "$enabled" -eq 1 ]; then
+               && [ "$enabled" = "1" ]; then
                ACTION=ifup INTERFACE=$1 DEVICE=$l3_device /sbin/hotplug-call iface
        fi
 }