浏览代码

fix(ur): actually send usage report directly when enabled (#9736)

There was a bug that the unique ID was not set when reporting was
enabled, and thus the reports where rejected by the server. The unique
ID got set only on startup, so next time Syncthing restarted.

This makes sure to set the unique ID when blank.
Jakob Borg 1 年之前
父节点
当前提交
3c476542d2
共有 3 个文件被更改,包括 10 次插入6 次删除
  1. 5 0
      lib/config/config_test.go
  2. 5 0
      lib/config/optionsconfiguration.go
  3. 0 6
      lib/syncthing/syncthing.go

+ 5 - 0
lib/config/config_test.go

@@ -305,6 +305,11 @@ func TestOverriddenValues(t *testing.T) {
 		t.Error(err)
 	}
 
+	if cfg.Options().URUniqueID == "" {
+		t.Error("expected usage reporting unique ID to be set since usage reporting is enabled")
+	}
+	expected.URUniqueID = cfg.Options().URUniqueID // it's random
+
 	if diff, equal := messagediff.PrettyDiff(expected, cfg.Options()); !equal {
 		t.Errorf("Overridden config differs. Diff:\n%s", diff)
 	}

+ 5 - 0
lib/config/optionsconfiguration.go

@@ -65,6 +65,11 @@ func (opts *OptionsConfiguration) prepare(guiPWIsSet bool) {
 		l.Warnln("Connection priority number for TCP over WAN must be worse (higher) than TCP over LAN. Correcting.")
 		opts.ConnectionPriorityTCPWAN = opts.ConnectionPriorityTCPLAN + 1
 	}
+
+	// If usage reporting is enabled we must have a unique ID.
+	if opts.URAccepted > 0 && opts.URUniqueID == "" {
+		opts.URUniqueID = rand.String(8)
+	}
 }
 
 // RequiresRestartOnly returns a copy with only the attributes that require

+ 0 - 6
lib/syncthing/syncthing.go

@@ -36,7 +36,6 @@ import (
 	"github.com/syncthing/syncthing/lib/model"
 	"github.com/syncthing/syncthing/lib/osutil"
 	"github.com/syncthing/syncthing/lib/protocol"
-	"github.com/syncthing/syncthing/lib/rand"
 	"github.com/syncthing/syncthing/lib/svcutil"
 	"github.com/syncthing/syncthing/lib/tlsutil"
 	"github.com/syncthing/syncthing/lib/upgrade"
@@ -291,11 +290,6 @@ func (a *App) startup() error {
 				// Unique ID will be set and config saved below if necessary.
 			}
 		}
-
-		// If we are going to do usage reporting, ensure we have a valid unique ID.
-		if cfg.Options.URAccepted > 0 && cfg.Options.URUniqueID == "" {
-			cfg.Options.URUniqueID = rand.String(8)
-		}
 	})
 
 	usageReportingSvc := ur.New(a.cfg, m, connectionsService, a.opts.NoUpgrade)