From a3d9b537ef29f1aa46c23ea6d06f9b6bdf1d3cbc Mon Sep 17 00:00:00 2001 From: Till Faelligen <2353100+S7evinK@users.noreply.github.com> Date: Thu, 26 Oct 2023 15:24:35 +0200 Subject: [PATCH] Fix potential connection leak --- roomserver/internal/perform/perform_invite.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/roomserver/internal/perform/perform_invite.go b/roomserver/internal/perform/perform_invite.go index 3abb69cb9..51c0cebbb 100644 --- a/roomserver/internal/perform/perform_invite.go +++ b/roomserver/internal/perform/perform_invite.go @@ -20,6 +20,7 @@ import ( "fmt" federationAPI "github.com/matrix-org/dendrite/federationapi/api" + "github.com/matrix-org/dendrite/internal/sqlutil" "github.com/matrix-org/dendrite/roomserver/api" "github.com/matrix-org/dendrite/roomserver/internal/helpers" "github.com/matrix-org/dendrite/roomserver/internal/input" @@ -108,6 +109,8 @@ func (r *Inviter) ProcessInviteMembership( if updater, err = r.DB.MembershipUpdater(ctx, inviteEvent.RoomID().String(), *inviteEvent.StateKey(), isTargetLocal, inviteEvent.Version()); err != nil { return nil, fmt.Errorf("r.DB.MembershipUpdater: %w", err) } + var succeeded bool + defer sqlutil.EndTransactionWithCheck(updater, &succeeded, &err) outputUpdates, err = helpers.UpdateToInviteMembership(updater, &types.Event{ EventNID: 0, PDU: inviteEvent.PDU, @@ -115,9 +118,7 @@ func (r *Inviter) ProcessInviteMembership( if err != nil { return nil, fmt.Errorf("updateToInviteMembership: %w", err) } - if err = updater.Commit(); err != nil { - return nil, fmt.Errorf("updater.Commit: %w", err) - } + succeeded = true return outputUpdates, nil }