From c8c74c7afe176e8aebcd08ceda37dcc596ba4ac0 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Tue, 23 Jun 2026 17:25:47 -0500 Subject: [PATCH] fix: handle DB errors in licensing API, fix wiki API URL-decode fallback - licensing/manage.go: capture Update/Delete errors instead of silently discarding them (UpdateLicense, UpdateTier, DeleteTier) - wiki.go API: fix findEntryForFile to allow URL-decode fallback for non-ASCII page names (was returning on ErrNotExist instead of falling through) --- routers/api/v1/licensing/manage.go | 15 ++++++++++++--- routers/api/v1/repo/wiki.go | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/routers/api/v1/licensing/manage.go b/routers/api/v1/licensing/manage.go index 6e716028b0..50d5fdb55a 100644 --- a/routers/api/v1/licensing/manage.go +++ b/routers/api/v1/licensing/manage.go @@ -207,7 +207,10 @@ func UpdateLicense(ctx *context.APIContext) { } if len(cols) > 0 { cols = append(cols, "updated_at") - db.GetEngine(ctx).ID(id).Cols(cols...).Update(license) + if _, err := db.GetEngine(ctx).ID(id).Cols(cols...).Update(license); err != nil { + ctx.APIErrorInternal(err) + return + } } ctx.JSON(http.StatusOK, licenseToJSON(ctx, license)) @@ -399,7 +402,10 @@ func UpdateTier(ctx *context.APIContext) { } if len(cols) > 0 { - db.GetEngine(ctx).ID(id).Cols(cols...).Update(tier) + if _, err := db.GetEngine(ctx).ID(id).Cols(cols...).Update(tier); err != nil { + ctx.APIErrorInternal(err) + return + } } ctx.JSON(http.StatusOK, tierToJSON(tier)) @@ -427,7 +433,10 @@ func DeleteTier(ctx *context.APIContext) { return } - db.GetEngine(ctx).ID(id).Delete(new(licensing_model.ProductTier)) + if _, err := db.GetEngine(ctx).ID(id).Delete(new(licensing_model.ProductTier)); err != nil { + ctx.APIErrorInternal(err) + return + } ctx.Status(http.StatusNoContent) } diff --git a/routers/api/v1/repo/wiki.go b/routers/api/v1/repo/wiki.go index f92d7efd55..2445c60fa1 100644 --- a/routers/api/v1/repo/wiki.go +++ b/routers/api/v1/repo/wiki.go @@ -603,7 +603,7 @@ func SearchWikiPages(ctx *context.APIContext) { // findEntryForFile finds the tree entry for a target filepath. func findEntryForFile(commit *git.Commit, target string) (*git.TreeEntry, error) { entry, err := commit.GetTreeEntryByPath(target) - if err != nil { + if err != nil && !git.IsErrNotExist(err) { return nil, err } if entry != nil {