adblock: update 3.8.1
authorDirk Brenken <dev@brenken.org>
Mon, 19 Aug 2019 21:34:31 +0000 (23:34 +0200)
committerDirk Brenken <dev@brenken.org>
Fri, 23 Aug 2019 04:49:06 +0000 (06:49 +0200)
* fix a possible race condition during DNS file reset on slow hardware
* optimize DNS restart behaviour in 'null' blocking mode
* mute useless warnings

Signed-off-by: Dirk Brenken <dev@brenken.org>
(cherry picked from commit 866878aa78cd04f97174e726670f634983abd6a6)

net/adblock/Makefile
net/adblock/files/adblock.sh

index a195490d39de27715030e60bb36dcdf96006b628..812f4d556a4c90765723ae81c640e6771d35f843 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
-PKG_VERSION:=3.8.0
+PKG_VERSION:=3.8.1
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index e4bba187a4b716b0c0104e56418c5d3cab4d3d25..56032f957341e6d23cf3a39365d489d05afffac5 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.8.0"
+adb_ver="3.8.1"
 adb_sysver="unknown"
 adb_enabled=0
 adb_debug=0
@@ -443,20 +443,14 @@ f_extconf()
 #
 f_dnsup()
 {
-       local dns_up cache_util cache_rc cnt=0
+       local dns_service dns_up dns_pid dns_procfile cache_util cache_rc cnt=0
 
        if [ "${adb_dnsflush}" -eq 0 ] && [ "${adb_enabled}" -eq 1 ] && [ "${adb_rc}" -eq 0 ]
        then
                case "${adb_dns}" in
                        "dnsmasq")
-                               if [ "${adb_dnsvariant}" = "nxdomain" ]
-                               then
-                                       killall -q -HUP "${adb_dns}"
-                                       cache_rc=${?}
-                               elif [ "${adb_dnsvariant% *}" = "null" ]
-                               then
-                                       "/etc/init.d/${adb_dns}" restart >/dev/null 2>&1
-                               fi
+                               killall -q -HUP "${adb_dns}"
+                               cache_rc=${?}
                        ;;
                        "unbound")
                                cache_util="$(command -v unbound-control)"
@@ -487,8 +481,11 @@ f_dnsup()
        adb_rc=1
        while [ "${cnt}" -le 10 ]
        do
-               dns_up="$(ubus -S call service list "{\"name\":\"${adb_dns}\"}" | jsonfilter -l1 -e "@[\"${adb_dns}\"].instances.*.running")"
-               if [ "${dns_up}" = "true" ]
+               dns_service="$(ubus -S call service list "{\"name\":\"${adb_dns}\"}")"
+               dns_up="$(printf "%s" "${dns_service}" | jsonfilter -l1 -e "@[\"${adb_dns}\"].instances.*.running")"
+               dns_pid="$(printf "%s" "${dns_service}" | jsonfilter -l1 -e "@[\"${adb_dns}\"].instances.*.pid")"
+               dns_procfile="$(ls -l /proc/${dns_pid}/fd 2>/dev/null | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")"
+               if [ "${dns_up}" = "true" ] && [ -n "${dns_pid}" ] && [ -z "${dns_procfile}" ]
                then
                        case "${adb_dns}" in
                                "unbound")
@@ -891,7 +888,7 @@ f_bgserv()
                ( "${adb_ubusservice}" &)
        elif [ -n "${bg_pid}" ] && [ "${status}" = "stop" ] 
        then
-               kill -HUP ${bg_pid}
+               kill -HUP ${bg_pid} 2>/dev/null
        fi
        f_log "debug" "f_bgserv ::: status: ${status:-"-"}, bg_pid: ${bg_pid:-"-"}, dns_filereset: ${adb_dnsfilereset:-"-"}, ubus_service: ${adb_ubusservice:-"-"}"
 }
@@ -1041,9 +1038,9 @@ f_main()
        then
                if [ "${adb_dnsfilereset}" = "true" ]
                then
-                       f_bgserv "start"
                        > "${adb_dnsdir}"/"${adb_dnsfile}"
                        f_log "info" "blocklist with overall ${adb_cnt} domains loaded successfully and reset afterwards (${adb_sysver})"
+                       f_bgserv "start"
                else
                        f_log "info" "blocklist with overall ${adb_cnt} domains loaded successfully (${adb_sysver})"
                fi
@@ -1075,7 +1072,7 @@ f_report()
                then
                        if [ -n "${bg_pid}" ]
                        then
-                               kill -HUP ${bg_pid}
+                               kill -HUP ${bg_pid} 2>/dev/null
                                while $(kill -0 ${bg_pid} 2>/dev/null)
                                do
                                        sleep 1