diff options
| author | 2025-10-06 13:11:23 +0200 | |
|---|---|---|
| committer | 2025-10-06 13:11:23 +0200 | |
| commit | c6044d014283abcd2f9e0a94149de232b00df8de (patch) | |
| tree | 80dc150f507527e32d4611427b166ea031403753 | |
| parent | [bugfix] Fix nil ptr in `DifferentFrom` func (#4477) (diff) | |
| download | gotosocial-c6044d014283abcd2f9e0a94149de232b00df8de.tar.xz | |
[bugfix] Fix `db error checking for int req: sql: no rows in result set` (#4478)v0.20.0-rc4
Fixes `sql: no rows in result set` when trying to append approvedByURI to a reply that was sent impolitely and approved impolitely.
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4478
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
| -rw-r--r-- | internal/typeutils/internaltoas.go | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go index feb794e51..6255ee8e2 100644 --- a/internal/typeutils/internaltoas.go +++ b/internal/typeutils/internaltoas.go @@ -2438,8 +2438,8 @@ func (c *Converter) InteractionReqToASAuthorization( } // appendASInteractionAuthorization is a utility function -// that sets `approvedBy`, and `likeAuthorization`, -// `replyAuthorization`, or `announceAuthorization`. +// that sets `approvedBy`, and (if possible) `likeAuthorization`, +// `replyAuthorization`, and/or `announceAuthorization`. func (c *Converter) appendASInteractionAuthorization( ctx context.Context, approvedByURIStr string, @@ -2458,11 +2458,28 @@ func (c *Converter) appendASInteractionAuthorization( gtscontext.SetBarebones(ctx), approvedByURIStr, ) - if err != nil { + if err != nil && !errors.Is(err, db.ErrNoEntries) { return gtserror.Newf("db error checking for int req: %w", err) } - // Make sure it's actually accepted. + // If the interaction request is nil, + // that means we originally sent out + // the interaction request impolitely, + // and it was accepted impolitely. + // Ie., behavior from <= v0.20.0. + // + // If this is so, just set `approvedBy` + // to given approvedByURIStr and bail, + // as there's nothing else we can do. + if intReq == nil { + if wap, ok := t.(ap.WithApprovedBy); ok { + ap.SetApprovedBy(wap, approvedByURI) + } + return nil + } + + // Make sure interaction request + // has actually been accepted. if !intReq.IsAccepted() { return gtserror.Newf( "approvedByURIStr %s corresponded to not-accepted interaction request %s", |
