summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar tobi <tobi.smethurst@protonmail.com>2025-10-06 13:11:23 +0200
committerLibravatar tobi <kipvandenbos@noreply.codeberg.org>2025-10-06 13:11:23 +0200
commitc6044d014283abcd2f9e0a94149de232b00df8de (patch)
tree80dc150f507527e32d4611427b166ea031403753
parent[bugfix] Fix nil ptr in `DifferentFrom` func (#4477) (diff)
downloadgotosocial-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.go25
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",