From 9305c45813809abe0efede5dbebb38446a1cbd84 Mon Sep 17 00:00:00 2001
From: Eugene Burkov <e.burkov@adguard.com>
Date: Fri, 29 Mar 2024 10:45:20 +0300
Subject: [PATCH] Pull request 2184: 6851 upstream mode reset

Updates #6851.

Squashed commit of the following:

commit ffc50daff8e9a2b0fd48f10c5e66cdc0ab350488
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Mar 25 17:55:39 2024 +0300

    all: fix changelog

commit cdc2193875e72f6504cf283c84e1e6c6768d4f6e
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Mon Mar 25 17:28:06 2024 +0300

    dnsforward: fix upstream mode set
---
 CHANGELOG.md                     | 5 +++++
 internal/dnsforward/http.go      | 2 --
 internal/dnsforward/http_test.go | 4 ++++
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 59a30bf1..9579a6e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,7 +35,12 @@ NOTE: Add new changes BELOW THIS COMMENT.
   will cause errors on startup in a future version.
 - Node.JS 16.  Future versions will require at least Node.JS 18 to build.
 
+### Fixed
+
+- Resetting DNS upstream mode when applying unrelated settings ([#6851]).
+
 [#5829]: https://github.com/AdguardTeam/AdGuardHome/issues/5829
+[#6851]: https://github.com/AdguardTeam/AdGuardHome/issues/6851
 
 <!--
 NOTE: Add new changes ABOVE THIS COMMENT.
diff --git a/internal/dnsforward/http.go b/internal/dnsforward/http.go
index 9ad2395a..2d446ac9 100644
--- a/internal/dnsforward/http.go
+++ b/internal/dnsforward/http.go
@@ -474,8 +474,6 @@ func (s *Server) setConfig(dc *jsonDNSConfig) (shouldRestart bool) {
 
 	if dc.UpstreamMode != nil {
 		s.conf.UpstreamMode = mustParseUpstreamMode(*dc.UpstreamMode)
-	} else {
-		s.conf.UpstreamMode = UpstreamModeLoadBalance
 	}
 
 	if dc.EDNSCSUseCustom != nil && *dc.EDNSCSUseCustom {
diff --git a/internal/dnsforward/http_test.go b/internal/dnsforward/http_test.go
index 408e2e46..b0145b23 100644
--- a/internal/dnsforward/http_test.go
+++ b/internal/dnsforward/http_test.go
@@ -29,6 +29,10 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
+// TODO(e.burkov):  Use the better approach to testdata with a separate
+// directory for each test, and a separate file for each subtest.  See the
+// [configmigrate] package.
+
 // emptySysResolvers is an empty [SystemResolvers] implementation that always
 // returns nil.
 type emptySysResolvers struct{}