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.
This commit is contained in:
Jakob Borg 2024-09-28 17:02:05 +02:00 committed by GitHub
parent 31874f3ebb
commit 3c476542d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 6 deletions

View File

@ -305,6 +305,11 @@ func TestOverriddenValues(t *testing.T) {
t.Error(err) 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 { if diff, equal := messagediff.PrettyDiff(expected, cfg.Options()); !equal {
t.Errorf("Overridden config differs. Diff:\n%s", diff) t.Errorf("Overridden config differs. Diff:\n%s", diff)
} }

View File

@ -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.") l.Warnln("Connection priority number for TCP over WAN must be worse (higher) than TCP over LAN. Correcting.")
opts.ConnectionPriorityTCPWAN = opts.ConnectionPriorityTCPLAN + 1 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 // RequiresRestartOnly returns a copy with only the attributes that require

View File

@ -36,7 +36,6 @@ import (
"github.com/syncthing/syncthing/lib/model" "github.com/syncthing/syncthing/lib/model"
"github.com/syncthing/syncthing/lib/osutil" "github.com/syncthing/syncthing/lib/osutil"
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/rand"
"github.com/syncthing/syncthing/lib/svcutil" "github.com/syncthing/syncthing/lib/svcutil"
"github.com/syncthing/syncthing/lib/tlsutil" "github.com/syncthing/syncthing/lib/tlsutil"
"github.com/syncthing/syncthing/lib/upgrade" "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. // 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) usageReportingSvc := ur.New(a.cfg, m, connectionsService, a.opts.NoUpgrade)