diff --git a/cmd/infra/strelaypoolsrv/main.go b/cmd/infra/strelaypoolsrv/main.go index d016eb2a1..7eedc4515 100644 --- a/cmd/infra/strelaypoolsrv/main.go +++ b/cmd/infra/strelaypoolsrv/main.go @@ -653,6 +653,7 @@ func getLocation(host string, geoip *geoip.Provider) location { type loggingResponseWriter struct { http.ResponseWriter + statusCode int } diff --git a/cmd/stdiscosrv/amqp.go b/cmd/stdiscosrv/amqp.go index d1b6817f1..9bc1b7f09 100644 --- a/cmd/stdiscosrv/amqp.go +++ b/cmd/stdiscosrv/amqp.go @@ -23,6 +23,7 @@ import ( type amqpReplicator struct { suture.Service + broker string sender *amqpSender receiver *amqpReceiver diff --git a/cmd/stdiscosrv/apisrv.go b/cmd/stdiscosrv/apisrv.go index dc585a48e..b8e4aa3fa 100644 --- a/cmd/stdiscosrv/apisrv.go +++ b/cmd/stdiscosrv/apisrv.go @@ -513,6 +513,7 @@ func fixupAddresses(remote *net.TCPAddr, addresses []string) []string { type loggingResponseWriter struct { http.ResponseWriter + statusCode int } diff --git a/cmd/syncthing/cli/client.go b/cmd/syncthing/cli/client.go index 7d618b8e3..0bfeb16b3 100644 --- a/cmd/syncthing/cli/client.go +++ b/cmd/syncthing/cli/client.go @@ -32,6 +32,7 @@ type APIClient interface { type apiClient struct { http.Client + cfg config.GUIConfiguration apikey string } diff --git a/internal/db/sqlite/db_prepared.go b/internal/db/sqlite/db_prepared.go index b06281ea7..494535e0f 100644 --- a/internal/db/sqlite/db_prepared.go +++ b/internal/db/sqlite/db_prepared.go @@ -10,6 +10,7 @@ import "github.com/jmoiron/sqlx" type txPreparedStmts struct { *sqlx.Tx + stmts map[string]*sqlx.Stmt } diff --git a/internal/db/sqlite/folderdb_open.go b/internal/db/sqlite/folderdb_open.go index 2540508e5..b1b4ec95d 100644 --- a/internal/db/sqlite/folderdb_open.go +++ b/internal/db/sqlite/folderdb_open.go @@ -14,9 +14,10 @@ import ( ) type folderDB struct { - folderID string *baseDB + folderID string + localDeviceIdx int64 deleteRetention time.Duration } diff --git a/lib/api/confighandler.go b/lib/api/confighandler.go index 5bfb32b4c..ec622504f 100644 --- a/lib/api/confighandler.go +++ b/lib/api/confighandler.go @@ -22,6 +22,7 @@ import ( type configMuxBuilder struct { *httprouter.Router + id protocol.DeviceID cfg config.Wrapper } diff --git a/lib/beacon/beacon.go b/lib/beacon/beacon.go index 0bc416f04..0166e5a00 100644 --- a/lib/beacon/beacon.go +++ b/lib/beacon/beacon.go @@ -32,6 +32,7 @@ type Interface interface { type cast struct { *suture.Supervisor + name string reader svcutil.ServiceWithError writer svcutil.ServiceWithError diff --git a/lib/config/config.go b/lib/config/config.go index cf409029a..ebf3a78ff 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -165,6 +165,7 @@ func (cfg *Configuration) ProbeFreePorts() error { type xmlConfiguration struct { Configuration + XMLName xml.Name `xml:"configuration"` } diff --git a/lib/connections/deprecated.go b/lib/connections/deprecated.go index 976aa1485..34e54d38a 100644 --- a/lib/connections/deprecated.go +++ b/lib/connections/deprecated.go @@ -11,6 +11,7 @@ import "github.com/syncthing/syncthing/lib/config" // invalidListener is never valid type invalidListener struct { listenerFactory + err error } @@ -25,6 +26,7 @@ func (i invalidListener) Valid(_ config.Configuration) error { // invalidDialer is never valid type invalidDialer struct { dialerFactory + err error } diff --git a/lib/connections/limiter.go b/lib/connections/limiter.go index 6cb61e053..d5e0bd56b 100644 --- a/lib/connections/limiter.go +++ b/lib/connections/limiter.go @@ -225,8 +225,9 @@ func getRateLimiter(m map[protocol.DeviceID]*rate.Limiter, deviceID protocol.Dev // limitedReader is a rate limited io.Reader type limitedReader struct { - reader io.Reader waiterHolder + + reader io.Reader } func (r *limitedReader) Read(buf []byte) (int, error) { @@ -239,8 +240,9 @@ func (r *limitedReader) Read(buf []byte) (int, error) { // limitedWriter is a rate limited io.Writer type limitedWriter struct { - writer io.Writer waiterHolder + + writer io.Writer } func (w *limitedWriter) Write(buf []byte) (int, error) { diff --git a/lib/connections/quic_dial.go b/lib/connections/quic_dial.go index 2450fe9f7..4ffe7d04b 100644 --- a/lib/connections/quic_dial.go +++ b/lib/connections/quic_dial.go @@ -39,6 +39,7 @@ func init() { type quicDialer struct { commonDialer + registry *registry.Registry } diff --git a/lib/connections/quic_listen.go b/lib/connections/quic_listen.go index 9a5a8e7d4..71ebe162c 100644 --- a/lib/connections/quic_listen.go +++ b/lib/connections/quic_listen.go @@ -39,10 +39,10 @@ func init() { type quicListener struct { svcutil.ServiceWithError - nat atomic.Uint64 // Holds a stun.NATType. - onAddressesChangedNotifier + nat atomic.Uint64 // Holds a stun.NATType. + uri *url.URL cfg config.Wrapper tlsCfg *tls.Config diff --git a/lib/connections/quic_misc.go b/lib/connections/quic_misc.go index dcde117c5..99a3b4c32 100644 --- a/lib/connections/quic_misc.go +++ b/lib/connections/quic_misc.go @@ -42,6 +42,7 @@ func quicNetwork(uri *url.URL) string { type quicTlsConn struct { quic.Connection quic.Stream + // If we created this connection, we should be the ones closing it. createdConn net.PacketConn } diff --git a/lib/connections/structs.go b/lib/connections/structs.go index c40e3b091..4cd72125b 100644 --- a/lib/connections/structs.go +++ b/lib/connections/structs.go @@ -39,6 +39,7 @@ type tlsConn interface { // came from (type, priority). type internalConn struct { tlsConn + connType connType isLocal bool priority int diff --git a/lib/connections/tcp_dial.go b/lib/connections/tcp_dial.go index 870575357..22d4621de 100644 --- a/lib/connections/tcp_dial.go +++ b/lib/connections/tcp_dial.go @@ -27,6 +27,7 @@ func init() { type tcpDialer struct { commonDialer + registry *registry.Registry } diff --git a/lib/dialer/internal.go b/lib/dialer/internal.go index b94d91fc7..a972e9684 100644 --- a/lib/dialer/internal.go +++ b/lib/dialer/internal.go @@ -64,6 +64,7 @@ func socksDialerFunction(u *url.URL, forward proxy.Dialer) (proxy.Dialer, error) // existing connection" shenanigans. type dialerConn struct { net.Conn + addr net.Addr } diff --git a/lib/discover/cache.go b/lib/discover/cache.go index 5a1a50a15..87ba28616 100644 --- a/lib/discover/cache.go +++ b/lib/discover/cache.go @@ -17,6 +17,7 @@ import ( // A cachedFinder is a Finder with associated cache timeouts. type cachedFinder struct { Finder + cacheTime time.Duration negCacheTime time.Duration cache *cache diff --git a/lib/discover/global.go b/lib/discover/global.go index 008b86845..850e38aa2 100644 --- a/lib/discover/global.go +++ b/lib/discover/global.go @@ -32,6 +32,8 @@ import ( ) type globalClient struct { + errorHolder + server string addrList AddressLister announceClient httpClient @@ -39,7 +41,6 @@ type globalClient struct { noAnnounce bool noLookup bool evLogger events.Logger - errorHolder } type httpClient interface { @@ -373,6 +374,7 @@ func queryBool(q url.Values, key string) bool { type idCheckingHTTPClient struct { httpClient + id protocol.DeviceID } diff --git a/lib/discover/local.go b/lib/discover/local.go index eaf0bf5e6..248b603a9 100644 --- a/lib/discover/local.go +++ b/lib/discover/local.go @@ -34,6 +34,8 @@ import ( type localClient struct { *suture.Supervisor + *cache + myID protocol.DeviceID addrList AddressLister name string @@ -43,8 +45,6 @@ type localClient struct { localBcastStart time.Time localBcastTick <-chan time.Time forcedBcastTick chan time.Time - - *cache } const ( diff --git a/lib/discover/manager.go b/lib/discover/manager.go index 8370a9405..4fe9e8312 100644 --- a/lib/discover/manager.go +++ b/lib/discover/manager.go @@ -41,6 +41,7 @@ type Manager interface { type manager struct { *suture.Supervisor + myID protocol.DeviceID cfg config.Wrapper cert tls.Certificate diff --git a/lib/fs/basicfs.go b/lib/fs/basicfs.go index bf0ad56f8..d5a01184f 100644 --- a/lib/fs/basicfs.go +++ b/lib/fs/basicfs.go @@ -340,6 +340,7 @@ func (*BasicFilesystem) underlying() (Filesystem, bool) { // basicFile implements the fs.File interface on top of an os.File type basicFile struct { *os.File + name string } diff --git a/lib/fs/fakefs.go b/lib/fs/fakefs.go index 52dbe53b7..2e4488e4e 100644 --- a/lib/fs/fakefs.go +++ b/lib/fs/fakefs.go @@ -749,6 +749,7 @@ func (fs *fakeFS) reportMetricsPer(b *testing.B, divisor float64, unit string) { // opened for reading or writing, it's all good. type fakeFile struct { *fakeEntry + mut *sync.Mutex rng io.Reader seed int64 diff --git a/lib/fs/logfs.go b/lib/fs/logfs.go index 073a98888..27e70ad80 100644 --- a/lib/fs/logfs.go +++ b/lib/fs/logfs.go @@ -16,6 +16,7 @@ import ( type logFilesystem struct { Filesystem + // Number of filesystem layers on top of logFilesystem to skip when looking // for the true caller of the filesystem layers int diff --git a/lib/fs/mtimefs.go b/lib/fs/mtimefs.go index 523652d77..b188806e4 100644 --- a/lib/fs/mtimefs.go +++ b/lib/fs/mtimefs.go @@ -19,6 +19,7 @@ type database interface { type mtimeFS struct { Filesystem + chtimes func(string, time.Time, time.Time) error db database folderID string @@ -170,6 +171,7 @@ func (f *mtimeFS) load(name string) (ondisk, virtual time.Time) { type mtimeFileInfo struct { FileInfo + mtime time.Time } @@ -179,6 +181,7 @@ func (m mtimeFileInfo) ModTime() time.Time { type mtimeFile struct { File + fs *mtimeFS } diff --git a/lib/fs/walkfs.go b/lib/fs/walkfs.go index a6c8613bb..9a185fed0 100644 --- a/lib/fs/walkfs.go +++ b/lib/fs/walkfs.go @@ -63,6 +63,7 @@ type WalkFunc func(path string, info FileInfo, err error) error type walkFilesystem struct { Filesystem + checkInfiniteRecursion bool } diff --git a/lib/model/folder.go b/lib/model/folder.go index 3e67cf8b5..639668f04 100644 --- a/lib/model/folder.go +++ b/lib/model/folder.go @@ -44,6 +44,7 @@ type folder struct { stateTracker config.FolderConfiguration *stats.FolderStatisticsReference + ioLimiter *semaphore.Semaphore localFlags protocol.FlagLocal diff --git a/lib/model/folder_sendrecv.go b/lib/model/folder_sendrecv.go index 2e00867b8..fbea9befd 100644 --- a/lib/model/folder_sendrecv.go +++ b/lib/model/folder_sendrecv.go @@ -48,6 +48,7 @@ func init() { // to be fetched. type pullBlockState struct { *sharedPullerState + block protocol.BlockInfo } @@ -55,6 +56,7 @@ type pullBlockState struct { // copied. type copyBlocksState struct { *sharedPullerState + blocks []protocol.BlockInfo have int } diff --git a/lib/model/model.go b/lib/model/model.go index 46c188841..4c82a81eb 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -690,6 +690,7 @@ type ConnectionStats struct { type ConnectionInfo struct { protocol.Statistics + Address string `json:"address"` Type string `json:"type"` IsLocal bool `json:"isLocal"` @@ -3484,6 +3485,7 @@ func redactPathError(err error) (error, bool) { type redactedError struct { error + redacted error } diff --git a/lib/protocol/counting.go b/lib/protocol/counting.go index 65684d45a..646a78a1f 100644 --- a/lib/protocol/counting.go +++ b/lib/protocol/counting.go @@ -14,6 +14,7 @@ import ( type countingReader struct { io.Reader + idString string tot atomic.Int64 // bytes last atomic.Int64 // unix nanos @@ -41,6 +42,7 @@ func (c *countingReader) Last() time.Time { type countingWriter struct { io.Writer + idString string tot atomic.Int64 // bytes last atomic.Int64 // unix nanos diff --git a/lib/protocol/encryption.go b/lib/protocol/encryption.go index 072d027d3..d662ddd35 100644 --- a/lib/protocol/encryption.go +++ b/lib/protocol/encryption.go @@ -171,6 +171,7 @@ func (e encryptedModel) Closed(err error) { // encrypts outgoing metadata and decrypts incoming responses. type encryptedConnection struct { ConnectionInfo + conn *rawConnection folderKeys *folderKeyRegistry keyGen *KeyGenerator diff --git a/lib/relay/client/client.go b/lib/relay/client/client.go index ada606568..c07678d76 100644 --- a/lib/relay/client/client.go +++ b/lib/relay/client/client.go @@ -38,6 +38,7 @@ func NewClient(uri *url.URL, certs []tls.Certificate, timeout time.Duration) (Re type commonClient struct { svcutil.ServiceWithError + invitations chan protocol.SessionInvitation } diff --git a/lib/scanner/walk.go b/lib/scanner/walk.go index b96d5c3bc..592aa2530 100644 --- a/lib/scanner/walk.go +++ b/lib/scanner/walk.go @@ -681,9 +681,10 @@ func (w *walker) String() string { // A byteCounter gets bytes added to it via Update() and then provides the // Total() and one minute moving average Rate() in bytes per second. type byteCounter struct { - total atomic.Int64 metrics.EWMA - stop chan struct{} + + total atomic.Int64 + stop chan struct{} } func newByteCounter() *byteCounter { diff --git a/lib/tlsutil/tlsutil.go b/lib/tlsutil/tlsutil.go index cbdd05b3b..43cb3d52e 100644 --- a/lib/tlsutil/tlsutil.go +++ b/lib/tlsutil/tlsutil.go @@ -200,6 +200,7 @@ func NewCertificateInMemory(commonName string, lifetimeDays int) (tls.Certificat type DowngradingListener struct { net.Listener + TLSConfig *tls.Config } @@ -244,9 +245,10 @@ func (l *DowngradingListener) AcceptNoWrapTLS() (net.Conn, bool, error) { } type UnionedConnection struct { + net.Conn + first [1]byte firstDone bool - net.Conn } func (c *UnionedConnection) Read(b []byte) (n int, err error) { diff --git a/lib/ur/failurereporting.go b/lib/ur/failurereporting.go index f2b92e278..8d0626b2d 100644 --- a/lib/ur/failurereporting.go +++ b/lib/ur/failurereporting.go @@ -41,6 +41,7 @@ var ( type FailureReport struct { FailureData + Count int Version string } diff --git a/lib/versioner/versioner.go b/lib/versioner/versioner.go index a6e5e8856..0f44bbfa7 100644 --- a/lib/versioner/versioner.go +++ b/lib/versioner/versioner.go @@ -55,6 +55,7 @@ func New(cfg config.FolderConfiguration) (Versioner, error) { type versionerWithErrorContext struct { Versioner + vtype string }