diff --git a/package/openwrt/files/etc/init.d/smartdns b/package/openwrt/files/etc/init.d/smartdns index b8462a8..ddbc095 100644 --- a/package/openwrt/files/etc/init.d/smartdns +++ b/package/openwrt/files/etc/init.d/smartdns @@ -17,6 +17,7 @@ BLACKLIST_IP_CONF="$SMARTDNS_CONF_DIR/blacklist-ip.conf" CUSTOM_CONF="$SMARTDNS_CONF_DIR/custom.conf" SMARTDNS_CONF_TMP="${SMARTDNS_CONF}.tmp" COREDUMP="0" +RESPAWN="0" set_forward_dnsmasq() { @@ -110,6 +111,7 @@ clear_iptable() service_triggers() { procd_add_reload_trigger firewall + procd_add_reload_trigger smartdns } @@ -284,7 +286,9 @@ load_service() { fi procd_set_param command /usr/sbin/smartdns -f -c $SMARTDNS_CONF $args - procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} + if [ "$RESPAWN" = "1" ]; then + procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} + fi procd_set_param file "$SMARTDNS_CONF" procd_close_instance } diff --git a/src/dns_server.c b/src/dns_server.c index 4fc31ab..779e9b6 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -1388,6 +1388,7 @@ static int _dns_server_recv(struct dns_server_conn *client, unsigned char *inpac if (dns_client_query(request->domain, qtype, dns_server_resolve_callback, request) != 0) { _dns_server_request_release(request); _dns_server_request_remove(request); + request = NULL; goto errout; }