From 8aa1b23a2296a3cf18ccd6cc220a3a1ea1768355 Mon Sep 17 00:00:00 2001 From: Ashley Mensah Date: Wed, 5 Nov 2025 17:11:23 +0100 Subject: [PATCH 1/2] actually commit my changes this time... --- client/internal/updatemanager/manager.go | 4 +++- client/internal/updatemanager/update_darwin.go | 5 +++++ client/internal/updatemanager/update_freebsd.go | 5 +++++ client/internal/updatemanager/update_js.go | 5 +++++ client/internal/updatemanager/update_linux.go | 5 +++++ client/internal/updatemanager/update_windows.go | 5 +++++ 6 files changed, 28 insertions(+), 1 deletion(-) diff --git a/client/internal/updatemanager/manager.go b/client/internal/updatemanager/manager.go index 8988b4d42d1..d1c989274de 100644 --- a/client/internal/updatemanager/manager.go +++ b/client/internal/updatemanager/manager.go @@ -61,6 +61,9 @@ type UpdateManager struct { // updateMutex protect update and expectedVersion fields updateMutex sync.Mutex + + // updateFunc is used for testing to mock the triggerUpdate behavior + updateFunc func(ctx context.Context, targetVersion string) error } func NewUpdateManager(statusRecorder *peer.Status, stateManager *statemanager.Manager) *UpdateManager { @@ -79,7 +82,6 @@ func NewUpdateManager(statusRecorder *peer.Status, stateManager *statemanager.Ma // CheckUpdateSuccess checks if the update was successful. It works without to start the update manager. func (u *UpdateManager) CheckUpdateSuccess(ctx context.Context) { u.updateStateManager(ctx) - return } func (u *UpdateManager) Start(ctx context.Context) { diff --git a/client/internal/updatemanager/update_darwin.go b/client/internal/updatemanager/update_darwin.go index af271e13676..1fddb267ced 100644 --- a/client/internal/updatemanager/update_darwin.go +++ b/client/internal/updatemanager/update_darwin.go @@ -18,6 +18,11 @@ const ( ) func (u *UpdateManager) triggerUpdate(ctx context.Context, targetVersion string) error { + // Use test function if set (for testing only) + if u.updateFunc != nil { + return u.updateFunc(ctx, targetVersion) + } + cmd := exec.CommandContext(ctx, "pkgutil", "--pkg-info", "io.netbird.client") outBytes, err := cmd.Output() if err != nil && cmd.ProcessState.ExitCode() == 1 { diff --git a/client/internal/updatemanager/update_freebsd.go b/client/internal/updatemanager/update_freebsd.go index f987897f129..41a29c2f1aa 100644 --- a/client/internal/updatemanager/update_freebsd.go +++ b/client/internal/updatemanager/update_freebsd.go @@ -5,6 +5,11 @@ package updatemanager import "context" func (u *UpdateManager) triggerUpdate(ctx context.Context, targetVersion string) error { + // Use test function if set (for testing purposes) + if u.updateFunc != nil { + return u.updateFunc(ctx, targetVersion) + } + // TODO: Implement return nil } diff --git a/client/internal/updatemanager/update_js.go b/client/internal/updatemanager/update_js.go index cec6c9a1c0a..43ddf30ff30 100644 --- a/client/internal/updatemanager/update_js.go +++ b/client/internal/updatemanager/update_js.go @@ -5,6 +5,11 @@ package updatemanager import "context" func (u *UpdateManager) triggerUpdate(ctx context.Context, targetVersion string) error { + // Use test function if set (for testing purposes) + if u.updateFunc != nil { + return u.updateFunc(ctx, targetVersion) + } + // TODO: Implement return nil } diff --git a/client/internal/updatemanager/update_linux.go b/client/internal/updatemanager/update_linux.go index 64caa0f7796..ad96e870169 100644 --- a/client/internal/updatemanager/update_linux.go +++ b/client/internal/updatemanager/update_linux.go @@ -5,6 +5,11 @@ package updatemanager import "context" func (u *UpdateManager) triggerUpdate(ctx context.Context, targetVersion string) error { + // Use test function if set (for testing purposes) + if u.updateFunc != nil { + return u.updateFunc(ctx, targetVersion) + } + // TODO: Implement return nil } diff --git a/client/internal/updatemanager/update_windows.go b/client/internal/updatemanager/update_windows.go index 163cad55706..3eacb5ae18a 100644 --- a/client/internal/updatemanager/update_windows.go +++ b/client/internal/updatemanager/update_windows.go @@ -26,6 +26,11 @@ const ( type installerType string func (u *UpdateManager) triggerUpdate(ctx context.Context, targetVersion string) error { + // Use test function if set (for testing purposes) + if u.updateFunc != nil { + return u.updateFunc(ctx, targetVersion) + } + method := installation() return install(ctx, method, targetVersion) } From 74eebeb95a3ef2e065cbda37cbde2e289a50c4e6 Mon Sep 17 00:00:00 2001 From: Ashley Mensah Date: Wed, 5 Nov 2025 17:20:22 +0100 Subject: [PATCH 2/2] added new 'handleOfferAnswer' method to engine.go to clean up offer answer logic and satisfy SonarQube analysis (case clause with > 6 lines) --- client/internal/engine.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/client/internal/engine.go b/client/internal/engine.go index ac559d2b4c8..72b1ad9b354 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -1442,16 +1442,9 @@ func (e *Engine) receiveSignalEvents() { switch msg.GetBody().Type { case sProto.Body_OFFER, sProto.Body_ANSWER: - offerAnswer, err := convertToOfferAnswer(msg) - if err != nil { + if err := e.handleOfferAnswer(msg, conn); err != nil { return err } - - if msg.Body.Type == sProto.Body_OFFER { - conn.OnRemoteOffer(*offerAnswer) - } else { - conn.OnRemoteAnswer(*offerAnswer) - } case sProto.Body_CANDIDATE: candidate, err := ice.UnmarshalCandidate(msg.GetBody().Payload) if err != nil { @@ -1479,6 +1472,20 @@ func (e *Engine) receiveSignalEvents() { e.signal.WaitStreamConnected() } +func (e *Engine) handleOfferAnswer(msg *sProto.Message, conn *peer.Conn) error { + offerAnswer, err := convertToOfferAnswer(msg) + if err != nil { + return err + } + + if msg.Body.Type == sProto.Body_OFFER { + conn.OnRemoteOffer(*offerAnswer) + } else { + conn.OnRemoteAnswer(*offerAnswer) + } + return nil +} + func (e *Engine) parseNATExternalIPMappings() []string { var mappedIPs []string var ignoredIFaces = make(map[string]interface{})