From 5912f32a3456007a0d452ee6a0cd621696cf7ce9 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 24 May 2023 12:37:56 +0200 Subject: [PATCH] wip --- lib/model/fakeconns_test.go | 2 +- lib/model/indexhandler.go | 58 ++++++------- lib/model/model.go | 16 ++-- lib/model/model_test.go | 2 +- lib/model/progressemitter.go | 8 +- lib/model/progressemitter_test.go | 2 +- lib/model/testutils_test.go | 4 +- lib/protocol/encryption.go | 4 +- lib/protocol/mocks/connection.go | 130 +++++++++++++++--------------- lib/protocol/protocol.go | 24 +++--- 10 files changed, 125 insertions(+), 125 deletions(-) diff --git a/lib/model/fakeconns_test.go b/lib/model/fakeconns_test.go index e3c264211..ed24d4f69 100644 --- a/lib/model/fakeconns_test.go +++ b/lib/model/fakeconns_test.go @@ -33,7 +33,7 @@ func newFakeConnection(id protocol.DeviceID, model Model) *fakeConnection { f.RequestCalls(func(ctx context.Context, folder, name string, blockNo int, offset int64, size int, hash []byte, weakHash uint32, fromTemporary bool) ([]byte, error) { return f.fileData[name], nil }) - f.IDReturns(id) + f.DeviceIDReturns(id) f.ConnectionIDReturns(rand.String(16)) f.CloseCalls(func(err error) { f.closeOnce.Do(func() { diff --git a/lib/model/indexhandler.go b/lib/model/indexhandler.go index ca0d913d1..8f6aab0ed 100644 --- a/lib/model/indexhandler.go +++ b/lib/model/indexhandler.go @@ -56,10 +56,10 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f // the IndexID, or something else weird has // happened. We send a full index to reset the // situation. - l.Infof("Device %v folder %s is delta index compatible, but seems out of sync with reality", conn.ID().Short(), folder.Description()) + l.Infof("Device %v folder %s is delta index compatible, but seems out of sync with reality", conn.DeviceID().Short(), folder.Description()) startSequence = 0 } else { - l.Debugf("Device %v folder %s is delta index compatible (mlv=%d)", conn.ID().Short(), folder.Description(), startInfo.local.MaxSequence) + l.Debugf("Device %v folder %s is delta index compatible (mlv=%d)", conn.DeviceID().Short(), folder.Description(), startInfo.local.MaxSequence) startSequence = startInfo.local.MaxSequence } } else if startInfo.local.IndexID != 0 { @@ -67,10 +67,10 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f // not the right one. Either they are confused or we // must have reset our database since last talking to // them. We'll start with a full index transfer. - l.Infof("Device %v folder %s has mismatching index ID for us (%v != %v)", conn.ID().Short(), folder.Description(), startInfo.local.IndexID, myIndexID) + l.Infof("Device %v folder %s has mismatching index ID for us (%v != %v)", conn.DeviceID().Short(), folder.Description(), startInfo.local.IndexID, myIndexID) startSequence = 0 } else { - l.Debugf("Device %v folder %s has no index ID for us", conn.ID().Short(), folder.Description()) + l.Debugf("Device %v folder %s has no index ID for us", conn.DeviceID().Short(), folder.Description()) } // This is the other side's description of themselves. We @@ -78,23 +78,23 @@ func newIndexHandler(conn protocol.Connection, downloads *deviceDownloadState, f // otherwise we drop our old index data and expect to get a // completely new set. - theirIndexID := fset.IndexID(conn.ID()) + theirIndexID := fset.IndexID(conn.DeviceID()) if startInfo.remote.IndexID == 0 { // They're not announcing an index ID. This means they // do not support delta indexes and we should clear any // information we have from them before accepting their // index, which will presumably be a full index. - l.Debugf("Device %v folder %s does not announce an index ID", conn.ID().Short(), folder.Description()) - fset.Drop(conn.ID()) + l.Debugf("Device %v folder %s does not announce an index ID", conn.DeviceID().Short(), folder.Description()) + fset.Drop(conn.DeviceID()) } else if startInfo.remote.IndexID != theirIndexID { // The index ID we have on file is not what they're // announcing. They must have reset their database and // will probably send us a full index. We drop any // information we have and remember this new index ID // instead. - l.Infof("Device %v folder %s has a new index ID (%v)", conn.ID().Short(), folder.Description(), startInfo.remote.IndexID) - fset.Drop(conn.ID()) - fset.SetIndexID(conn.ID(), startInfo.remote.IndexID) + l.Infof("Device %v folder %s has a new index ID (%v)", conn.DeviceID().Short(), folder.Description(), startInfo.remote.IndexID) + fset.Drop(conn.DeviceID()) + fset.SetIndexID(conn.DeviceID(), startInfo.remote.IndexID) } return &indexHandler{ @@ -129,12 +129,12 @@ func (s *indexHandler) waitForFileset(ctx context.Context) (*db.FileSet, error) } func (s *indexHandler) Serve(ctx context.Context) (err error) { - l.Infof("Starting index handler for %s to %s at %s (slv=%d)", s.folder, s.conn.ID().Short(), s.conn, s.prevSequence) + l.Infof("Starting index handler for %s to %s at %s (slv=%d)", s.folder, s.conn.DeviceID().Short(), s.conn, s.prevSequence) stop := make(chan struct{}) defer func() { err = svcutil.NoRestartErr(err) - l.Infof("Exiting index handler for %s to %s at %s: %v", s.folder, s.conn.ID().Short(), s.conn, err) + l.Infof("Exiting index handler for %s to %s at %s: %v", s.folder, s.conn.DeviceID().Short(), s.conn, err) close(stop) }() @@ -320,7 +320,7 @@ func (s *indexHandler) sendIndexTo(ctx context.Context, fset *db.FileSet) error } func (s *indexHandler) receive(fs []protocol.FileInfo, update bool, op string) error { - deviceID := s.conn.ID() + deviceID := s.conn.DeviceID() s.cond.L.Lock() paused := s.paused @@ -381,7 +381,7 @@ func prepareFileInfoForIndex(f protocol.FileInfo) protocol.FileInfo { } func (s *indexHandler) String() string { - return fmt.Sprintf("indexHandler@%p for %s to %s at %s", s, s.folder, s.conn.ID().Short(), s.conn) + return fmt.Sprintf("indexHandler@%p for %s to %s at %s", s, s.folder, s.conn.DeviceID().Short(), s.conn) } type indexHandlerRegistry struct { @@ -426,7 +426,7 @@ func newIndexHandlerRegistry(conn protocol.Connection, downloads *deviceDownload } func (r *indexHandlerRegistry) String() string { - return fmt.Sprintf("indexHandlerRegistry/%v", r.conn.ID().Short()) + return fmt.Sprintf("indexHandlerRegistry/%v", r.conn.DeviceID().Short()) } func (r *indexHandlerRegistry) GetSupervisor() *suture.Supervisor { @@ -459,11 +459,11 @@ func (r *indexHandlerRegistry) AddIndexInfo(folder string, startInfo *clusterCon if is, ok := r.indexHandlers[folder]; ok { r.sup.RemoveAndWait(is.token, 0) delete(r.indexHandlers, folder) - l.Debugf("Removed index sender for device %v and folder %v due to added pending", r.conn.ID().Short(), folder) + l.Debugf("Removed index sender for device %v and folder %v due to added pending", r.conn.DeviceID().Short(), folder) } folderState, ok := r.folderStates[folder] if !ok { - l.Debugf("Pending index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Pending index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) r.startInfos[folder] = startInfo return } @@ -476,13 +476,13 @@ func (r *indexHandlerRegistry) Remove(folder string) { r.mut.Lock() defer r.mut.Unlock() - l.Debugf("Removing index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Removing index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) if is, ok := r.indexHandlers[folder]; ok { r.sup.RemoveAndWait(is.token, 0) delete(r.indexHandlers, folder) } delete(r.startInfos, folder) - l.Debugf("Removed index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Removed index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) } // RemoveAllExcept stops all running index handlers and removes those pending to be started, @@ -496,13 +496,13 @@ func (r *indexHandlerRegistry) RemoveAllExcept(except map[string]remoteFolderSta if _, ok := except[folder]; !ok { r.sup.RemoveAndWait(is.token, 0) delete(r.indexHandlers, folder) - l.Debugf("Removed index handler for device %v and folder %v (removeAllExcept)", r.conn.ID().Short(), folder) + l.Debugf("Removed index handler for device %v and folder %v (removeAllExcept)", r.conn.DeviceID().Short(), folder) } } for folder := range r.startInfos { if _, ok := except[folder]; !ok { delete(r.startInfos, folder) - l.Debugf("Removed pending index handler for device %v and folder %v (removeAllExcept)", r.conn.ID().Short(), folder) + l.Debugf("Removed pending index handler for device %v and folder %v (removeAllExcept)", r.conn.DeviceID().Short(), folder) } } } @@ -511,7 +511,7 @@ func (r *indexHandlerRegistry) RemoveAllExcept(except map[string]remoteFolderSta // changes. The exception being if the folder is removed entirely, then call // Remove. The fset and runner arguments may be nil, if given folder is paused. func (r *indexHandlerRegistry) RegisterFolderState(folder config.FolderConfiguration, fset *db.FileSet, runner service) { - if !folder.SharedWith(r.conn.ID()) { + if !folder.SharedWith(r.conn.DeviceID()) { r.Remove(folder.ID) return } @@ -528,13 +528,13 @@ func (r *indexHandlerRegistry) RegisterFolderState(folder config.FolderConfigura // folderPausedLocked stops a running index handler. // It is a noop if the folder isn't known or has not been started yet. func (r *indexHandlerRegistry) folderPausedLocked(folder string) { - l.Debugf("Pausing index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Pausing index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) delete(r.folderStates, folder) if is, ok := r.indexHandlers[folder]; ok { is.pause() - l.Debugf("Paused index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Paused index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) } else { - l.Debugf("No index handler for device %v and folder %v to pause", r.conn.ID().Short(), folder) + l.Debugf("No index handler for device %v and folder %v to pause", r.conn.DeviceID().Short(), folder) } } @@ -553,16 +553,16 @@ func (r *indexHandlerRegistry) folderRunningLocked(folder config.FolderConfigura if isOk { r.sup.RemoveAndWait(is.token, 0) delete(r.indexHandlers, folder.ID) - l.Debugf("Removed index handler for device %v and folder %v in resume", r.conn.ID().Short(), folder.ID) + l.Debugf("Removed index handler for device %v and folder %v in resume", r.conn.DeviceID().Short(), folder.ID) } r.startLocked(folder, fset, runner, info) delete(r.startInfos, folder.ID) - l.Debugf("Started index handler for device %v and folder %v in resume", r.conn.ID().Short(), folder.ID) + l.Debugf("Started index handler for device %v and folder %v in resume", r.conn.DeviceID().Short(), folder.ID) } else if isOk { - l.Debugf("Resuming index handler for device %v and folder %v", r.conn.ID().Short(), folder) + l.Debugf("Resuming index handler for device %v and folder %v", r.conn.DeviceID().Short(), folder) is.resume(fset, runner) } else { - l.Debugf("Not resuming index handler for device %v and folder %v as none is paused and there is no start info", r.conn.ID().Short(), folder.ID) + l.Debugf("Not resuming index handler for device %v and folder %v as none is paused and there is no start info", r.conn.DeviceID().Short(), folder.ID) } } diff --git a/lib/model/model.go b/lib/model/model.go index 736937ca9..48f4d2efd 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1181,7 +1181,7 @@ func (m *model) handleIndex(conn protocol.Connection, folder string, fs []protoc op += " update" } - deviceID := conn.ID() + deviceID := conn.DeviceID() l.Debugf("%v (in): %s / %q: %d files", op, deviceID, folder, len(fs)) if cfg, ok := m.cfg.Folder(folder); !ok || !cfg.SharedWith(deviceID) { @@ -1216,7 +1216,7 @@ func (m *model) ClusterConfig(conn protocol.Connection, cm protocol.ClusterConfi // Also, collect a list of folders we do share, and if he's interested in // temporary indexes, subscribe the connection. - deviceID := conn.ID() + deviceID := conn.DeviceID() connID := conn.ConnectionID() l.Debugf("Handling ClusterConfig from %v/%s", deviceID.Short(), connID) @@ -1342,7 +1342,7 @@ func (m *model) ClusterConfig(conn protocol.Connection, cm protocol.ClusterConfi } func (m *model) ensureIndexHandler(conn protocol.Connection) *indexHandlerRegistry { - deviceID := conn.ID() + deviceID := conn.DeviceID() connID := conn.ConnectionID() m.pmut.Lock() @@ -1629,7 +1629,7 @@ func (m *model) sendClusterConfig(ids []protocol.DeviceID) { m.pmut.RUnlock() // Generating cluster-configs acquires fmut -> must happen outside of pmut. for _, conn := range ccConns { - cm, passwords := m.generateClusterConfig(conn.ID()) + cm, passwords := m.generateClusterConfig(conn.DeviceID()) conn.SetFolderPasswords(passwords) go conn.ClusterConfig(cm) } @@ -1861,7 +1861,7 @@ func (m *model) introduceDevice(device protocol.Device, introducerCfg config.Dev // Closed is called when a connection has been closed func (m *model) Closed(conn protocol.Connection, err error) { connID := conn.ConnectionID() - deviceID := conn.ID() + deviceID := conn.DeviceID() m.pmut.Lock() conn, ok := m.conns[connID] @@ -1948,7 +1948,7 @@ func (m *model) Request(conn protocol.Connection, folder, name string, _, size i return nil, protocol.ErrInvalid } - deviceID := conn.ID() + deviceID := conn.DeviceID() connID := conn.ConnectionID() m.fmut.RLock() @@ -2330,7 +2330,7 @@ func (m *model) GetHello(id protocol.DeviceID) protocol.HelloIntf { // be sent to the connected peer, thereafter index updates whenever the local // folder changes. func (m *model) AddConnection(conn protocol.Connection, hello protocol.Hello) { - deviceID := conn.ID() + deviceID := conn.DeviceID() deviceCfg, ok := m.cfg.Device(deviceID) if !ok { @@ -2435,7 +2435,7 @@ func (m *model) promoteConnections() { } func (m *model) DownloadProgress(conn protocol.Connection, folder string, updates []protocol.FileDownloadProgressUpdate) error { - deviceID := conn.ID() + deviceID := conn.DeviceID() m.fmut.RLock() cfg, ok := m.folderCfgs[folder] diff --git a/lib/model/model_test.go b/lib/model/model_test.go index a5acbc775..84ab7aef6 100644 --- a/lib/model/model_test.go +++ b/lib/model/model_test.go @@ -1338,7 +1338,7 @@ func TestAutoAcceptEnc(t *testing.T) { // would panic. clusterConfig := func(deviceID protocol.DeviceID, cm protocol.ClusterConfig) { m.AddConnection(newFakeConnection(deviceID, m), protocol.Hello{}) - m.ClusterConfig(&protocolmocks.Connection{IDStub: func() protocol.DeviceID { return deviceID }}, cm) + m.ClusterConfig(&protocolmocks.Connection{DeviceIDStub: func() protocol.DeviceID { return deviceID }}, cm) } clusterConfig(device1, basicCC()) diff --git a/lib/model/progressemitter.go b/lib/model/progressemitter.go index fab9e72c9..537f6b561 100644 --- a/lib/model/progressemitter.go +++ b/lib/model/progressemitter.go @@ -315,15 +315,15 @@ func (t *ProgressEmitter) emptyLocked() bool { func (t *ProgressEmitter) temporaryIndexSubscribe(conn protocol.Connection, folders []string) { t.mut.Lock() defer t.mut.Unlock() - t.connections[conn.ID()] = conn - t.foldersByConns[conn.ID()] = folders + t.connections[conn.DeviceID()] = conn + t.foldersByConns[conn.DeviceID()] = folders } func (t *ProgressEmitter) temporaryIndexUnsubscribe(conn protocol.Connection) { t.mut.Lock() defer t.mut.Unlock() - delete(t.connections, conn.ID()) - delete(t.foldersByConns, conn.ID()) + delete(t.connections, conn.DeviceID()) + delete(t.foldersByConns, conn.DeviceID()) } func (t *ProgressEmitter) clearLocked() { diff --git a/lib/model/progressemitter_test.go b/lib/model/progressemitter_test.go index 24eb70158..e103a69ae 100644 --- a/lib/model/progressemitter_test.go +++ b/lib/model/progressemitter_test.go @@ -463,7 +463,7 @@ func TestSendDownloadProgressMessages(t *testing.T) { p.temporaryIndexUnsubscribe(fc) sendMsgs(p) - _, ok := p.sentDownloadStates[fc.ID()] + _, ok := p.sentDownloadStates[fc.DeviceID()] if ok { t.Error("Should not be there") } diff --git a/lib/model/testutils_test.go b/lib/model/testutils_test.go index 2ac7b04a7..5eb0d5de4 100644 --- a/lib/model/testutils_test.go +++ b/lib/model/testutils_test.go @@ -38,9 +38,9 @@ func init() { myID, _ = protocol.DeviceIDFromString("ZNWFSWE-RWRV2BD-45BLMCV-LTDE2UR-4LJDW6J-R5BPWEB-TXD27XJ-IZF5RA4") device1, _ = protocol.DeviceIDFromString("AIR6LPZ-7K4PTTV-UXQSMUU-CPQ5YWH-OEDFIIQ-JUG777G-2YQXXR5-YD6AWQR") device2, _ = protocol.DeviceIDFromString("GYRZZQB-IRNPV4Z-T7TC52W-EQYJ3TT-FDQW6MW-DFLMU42-SSSU6EM-FBK2VAY") - device1Conn.IDReturns(device1) + device1Conn.DeviceIDReturns(device1) device1Conn.ConnectionIDReturns(rand.String(16)) - device2Conn.IDReturns(device2) + device2Conn.DeviceIDReturns(device2) device2Conn.ConnectionIDReturns(rand.String(16)) cfg := config.New(myID) diff --git a/lib/protocol/encryption.go b/lib/protocol/encryption.go index 1c8644cbe..1149aeb28 100644 --- a/lib/protocol/encryption.go +++ b/lib/protocol/encryption.go @@ -185,8 +185,8 @@ func (e encryptedConnection) SetFolderPasswords(passwords map[string]string) { e.folderKeys.setPasswords(passwords) } -func (e encryptedConnection) ID() DeviceID { - return e.conn.ID() +func (e encryptedConnection) DeviceID() DeviceID { + return e.conn.DeviceID() } func (e encryptedConnection) Index(ctx context.Context, folder string, files []FileInfo) error { diff --git a/lib/protocol/mocks/connection.go b/lib/protocol/mocks/connection.go index e29b84955..de1d7c287 100644 --- a/lib/protocol/mocks/connection.go +++ b/lib/protocol/mocks/connection.go @@ -51,6 +51,16 @@ type Connection struct { cryptoReturnsOnCall map[int]struct { result1 string } + DeviceIDStub func() protocol.DeviceID + deviceIDMutex sync.RWMutex + deviceIDArgsForCall []struct { + } + deviceIDReturns struct { + result1 protocol.DeviceID + } + deviceIDReturnsOnCall map[int]struct { + result1 protocol.DeviceID + } DownloadProgressStub func(context.Context, string, []protocol.FileDownloadProgressUpdate) downloadProgressMutex sync.RWMutex downloadProgressArgsForCall []struct { @@ -68,16 +78,6 @@ type Connection struct { establishedAtReturnsOnCall map[int]struct { result1 time.Time } - IDStub func() protocol.DeviceID - iDMutex sync.RWMutex - iDArgsForCall []struct { - } - iDReturns struct { - result1 protocol.DeviceID - } - iDReturnsOnCall map[int]struct { - result1 protocol.DeviceID - } IndexStub func(context.Context, string, []protocol.FileInfo) error indexMutex sync.RWMutex indexArgsForCall []struct { @@ -431,6 +431,59 @@ func (fake *Connection) CryptoReturnsOnCall(i int, result1 string) { }{result1} } +func (fake *Connection) DeviceID() protocol.DeviceID { + fake.deviceIDMutex.Lock() + ret, specificReturn := fake.deviceIDReturnsOnCall[len(fake.deviceIDArgsForCall)] + fake.deviceIDArgsForCall = append(fake.deviceIDArgsForCall, struct { + }{}) + stub := fake.DeviceIDStub + fakeReturns := fake.deviceIDReturns + fake.recordInvocation("DeviceID", []interface{}{}) + fake.deviceIDMutex.Unlock() + if stub != nil { + return stub() + } + if specificReturn { + return ret.result1 + } + return fakeReturns.result1 +} + +func (fake *Connection) DeviceIDCallCount() int { + fake.deviceIDMutex.RLock() + defer fake.deviceIDMutex.RUnlock() + return len(fake.deviceIDArgsForCall) +} + +func (fake *Connection) DeviceIDCalls(stub func() protocol.DeviceID) { + fake.deviceIDMutex.Lock() + defer fake.deviceIDMutex.Unlock() + fake.DeviceIDStub = stub +} + +func (fake *Connection) DeviceIDReturns(result1 protocol.DeviceID) { + fake.deviceIDMutex.Lock() + defer fake.deviceIDMutex.Unlock() + fake.DeviceIDStub = nil + fake.deviceIDReturns = struct { + result1 protocol.DeviceID + }{result1} +} + +func (fake *Connection) DeviceIDReturnsOnCall(i int, result1 protocol.DeviceID) { + fake.deviceIDMutex.Lock() + defer fake.deviceIDMutex.Unlock() + fake.DeviceIDStub = nil + if fake.deviceIDReturnsOnCall == nil { + fake.deviceIDReturnsOnCall = make(map[int]struct { + result1 protocol.DeviceID + }) + } + fake.deviceIDReturnsOnCall[i] = struct { + result1 protocol.DeviceID + }{result1} +} + func (fake *Connection) DownloadProgress(arg1 context.Context, arg2 string, arg3 []protocol.FileDownloadProgressUpdate) { var arg3Copy []protocol.FileDownloadProgressUpdate if arg3 != nil { @@ -523,59 +576,6 @@ func (fake *Connection) EstablishedAtReturnsOnCall(i int, result1 time.Time) { }{result1} } -func (fake *Connection) ID() protocol.DeviceID { - fake.iDMutex.Lock() - ret, specificReturn := fake.iDReturnsOnCall[len(fake.iDArgsForCall)] - fake.iDArgsForCall = append(fake.iDArgsForCall, struct { - }{}) - stub := fake.IDStub - fakeReturns := fake.iDReturns - fake.recordInvocation("ID", []interface{}{}) - fake.iDMutex.Unlock() - if stub != nil { - return stub() - } - if specificReturn { - return ret.result1 - } - return fakeReturns.result1 -} - -func (fake *Connection) IDCallCount() int { - fake.iDMutex.RLock() - defer fake.iDMutex.RUnlock() - return len(fake.iDArgsForCall) -} - -func (fake *Connection) IDCalls(stub func() protocol.DeviceID) { - fake.iDMutex.Lock() - defer fake.iDMutex.Unlock() - fake.IDStub = stub -} - -func (fake *Connection) IDReturns(result1 protocol.DeviceID) { - fake.iDMutex.Lock() - defer fake.iDMutex.Unlock() - fake.IDStub = nil - fake.iDReturns = struct { - result1 protocol.DeviceID - }{result1} -} - -func (fake *Connection) IDReturnsOnCall(i int, result1 protocol.DeviceID) { - fake.iDMutex.Lock() - defer fake.iDMutex.Unlock() - fake.IDStub = nil - if fake.iDReturnsOnCall == nil { - fake.iDReturnsOnCall = make(map[int]struct { - result1 protocol.DeviceID - }) - } - fake.iDReturnsOnCall[i] = struct { - result1 protocol.DeviceID - }{result1} -} - func (fake *Connection) Index(arg1 context.Context, arg2 string, arg3 []protocol.FileInfo) error { var arg3Copy []protocol.FileInfo if arg3 != nil { @@ -1229,12 +1229,12 @@ func (fake *Connection) Invocations() map[string][][]interface{} { defer fake.connectionIDMutex.RUnlock() fake.cryptoMutex.RLock() defer fake.cryptoMutex.RUnlock() + fake.deviceIDMutex.RLock() + defer fake.deviceIDMutex.RUnlock() fake.downloadProgressMutex.RLock() defer fake.downloadProgressMutex.RUnlock() fake.establishedAtMutex.RLock() defer fake.establishedAtMutex.RUnlock() - fake.iDMutex.RLock() - defer fake.iDMutex.RUnlock() fake.indexMutex.RLock() defer fake.indexMutex.RUnlock() fake.indexUpdateMutex.RLock() diff --git a/lib/protocol/protocol.go b/lib/protocol/protocol.go index 3e2ef9f3e..367cf1d04 100644 --- a/lib/protocol/protocol.go +++ b/lib/protocol/protocol.go @@ -161,7 +161,7 @@ type Connection interface { Start() SetFolderPasswords(passwords map[string]string) Close(err error) - ID() DeviceID + DeviceID() DeviceID Index(ctx context.Context, folder string, files []FileInfo) error IndexUpdate(ctx context.Context, folder string, files []FileInfo) error Request(ctx context.Context, folder string, name string, blockNo int, offset int64, size int, hash []byte, weakHash uint32, fromTemporary bool) ([]byte, error) @@ -187,7 +187,7 @@ type ConnectionInfo interface { type rawConnection struct { ConnectionInfo - id DeviceID + deviceID DeviceID model contextLessModel startTime time.Time @@ -273,7 +273,7 @@ func newRawConnection(deviceID DeviceID, reader io.Reader, writer io.Writer, clo return &rawConnection{ ConnectionInfo: connInfo, - id: deviceID, + deviceID: deviceID, model: receiver, cr: cr, cw: cw, @@ -318,8 +318,8 @@ func (c *rawConnection) Start() { c.startTime = time.Now().Truncate(time.Second) } -func (c *rawConnection) ID() DeviceID { - return c.id +func (c *rawConnection) DeviceID() DeviceID { + return c.deviceID } // Index writes the list of file information to the connected peer device @@ -602,12 +602,12 @@ func (c *rawConnection) readHeader(fourByteBuf []byte) (Header, error) { } func (c *rawConnection) handleIndex(im Index) error { - l.Debugf("Index(%v, %v, %d file)", c.id, im.Folder, len(im.Files)) + l.Debugf("Index(%v, %v, %d file)", c.deviceID, im.Folder, len(im.Files)) return c.model.Index(im.Folder, im.Files) } func (c *rawConnection) handleIndexUpdate(im IndexUpdate) error { - l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Folder, len(im.Files)) + l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.deviceID, im.Folder, len(im.Files)) return c.model.IndexUpdate(im.Folder, im.Files) } @@ -948,7 +948,7 @@ func (c *rawConnection) internalClose(err error) { c.closeOnce.Do(func() { l.Debugln("close due to", err) if cerr := c.closer.Close(); cerr != nil { - l.Debugln(c.id, "failed to close underlying conn:", cerr) + l.Debugln(c.deviceID, "failed to close underlying conn:", cerr) } close(c.closed) @@ -981,11 +981,11 @@ func (c *rawConnection) pingSender() { case <-ticker.C: d := time.Since(c.cw.Last()) if d < PingSendInterval/2 { - l.Debugln(c.id, "ping skipped after wr", d) + l.Debugln(c.deviceID, "ping skipped after wr", d) continue } - l.Debugln(c.id, "ping -> after", d) + l.Debugln(c.deviceID, "ping -> after", d) c.ping() case <-c.closed: @@ -1006,11 +1006,11 @@ func (c *rawConnection) pingReceiver() { case <-ticker.C: d := time.Since(c.cr.Last()) if d > ReceiveTimeout { - l.Debugln(c.id, "ping timeout", d) + l.Debugln(c.deviceID, "ping timeout", d) c.internalClose(ErrTimeout) } - l.Debugln(c.id, "last read within", d) + l.Debugln(c.deviceID, "last read within", d) case <-c.closed: return