https-dns-proxy: bugfix: prevent crashes on IPv6 systems

* update service triggers so that procd_add_raw_trigger is only
  executed on boot and not on other service actions
* remove outdated iface hotplug script

Signed-off-by: Stan Grishin <stangri@melmac.ca>
(cherry picked from commit 5dd08fe23f)
This commit is contained in:
Stan Grishin 2023-10-24 02:14:08 +00:00
parent 6a390b09c3
commit 77a7bb6c62
3 changed files with 25 additions and 17 deletions

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=https-dns-proxy
PKG_VERSION:=2023-05-25
PKG_RELEASE:=7
PKG_RELEASE:=8
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy/

View File

@ -1,14 +0,0 @@
#!/bin/sh
# Copied from https://openwrt.org/docs/guide-user/advanced/hotplug_extras
# shellcheck disable=SC1091
. /lib/functions/network.sh
network_flush_cache
network_find_wan NET_IF
network_find_wan6 NET_IF6
[ "$INTERFACE" != "$NET_IF" ] && [ "$INTERFACE" != "$NET_IF6" ] && exit 0
[ "$ACTION" != "ifup" ] && [ "$ACTION" != "ifupdate" ] && exit 0
[ "$ACTION" = "ifupdate" ] && [ -z "$IFUPDATE_ADDRESSES" ] && \
[ -z "$IFUPDATE_DATA" ] && exit 0
sleep 10
/etc/init.d/https-dns-proxy start 'on_hotplug'

View File

@ -28,6 +28,8 @@ readonly DEFAULT_BOOTSTRAP="${BOOTSTRAP_CF},${BOOTSTRAP_GOOGLE}"
readonly canaryDomainsMozilla='use-application-dns.net'
readonly canaryDomainsiCloud='mask.icloud.com mask-h2.icloud.com'
on_boot_trigger=
str_contains() { [ -n "$1" ] &&[ -n "$2" ] && [ "${1//$2}" != "$1" ]; }
is_mac_address() { expr "$1" : '[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]$' >/dev/null; }
is_ipv4() { expr "$1" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; }
@ -133,7 +135,8 @@ resolver_health_check() { resolveip -t 3 one.one.one.one >/dev/null 2>&1; }
boot() {
ubus -t 30 wait_for network.interface 2>/dev/null
rc_procd start_service 'on_boot'
on_boot_trigger=1
rc_procd start_service 'on_boot' && rc_procd service_started 'on_boot'
resolver_health_check || rc_procd stop_service 'on_boot'
}
@ -295,9 +298,28 @@ stop_service() {
}
service_triggers() {
procd_add_raw_trigger "interface.*.up" 3000 "/etc/init.d/${packageName}" restart 'on_interface_up'
local wan wan6 i
local procd_trigger_wan6
if [ "$on_boot_trigger" = '1' ]; then
procd_add_raw_trigger "interface.*.up" 3000 "/etc/init.d/${packageName}" restart 'on_interface_up'
else
config_load "$packageName"
config_get_bool procd_trigger_wan6 'config' 'procd_trigger_wan6' '0'
. /lib/functions/network.sh
network_flush_cache
network_find_wan wan
wan="${wan:-wan}"
if [ "$procd_trigger_wan6" -ne 0 ]; then
network_find_wan6 wan6
wan6="${wan6:-wan6}"
fi
for i in $wan $wan6; do
procd_add_interface_trigger "interface.*" "$i" "/etc/init.d/${packageName}" restart 'on_interface_trigger'
done
fi
procd_add_config_trigger "config.change" "$packageName" "/etc/init.d/${packageName}" reload 'on_config_change'
}
service_started() { procd_set_config_changed firewall; }
service_stopped() { procd_set_config_changed firewall; }
restart() { procd_send_signal "$packageName"; rc_procd start_service "$*"; }