Skip to content

[Backport 5.x] fix: callNotFound should run not-found preHandler regardless of registration order - #6973

Merged
climba03003 merged 1 commit into
5.xfrom
backport-6965-to-5.x
Aug 23, 2026
Merged

climba03003 merged 1 commit into
5.xfrom
backport-6965-to-5.x

Conversation

@github-actions

Copy link
Copy Markdown

Backport 4176096 from #6965.

…tration order (#6965)

setContext() in four-oh-four.js takes a detached shallow snapshot of the
selected not-found context. When a route that calls reply.callNotFound()
is registered before setNotFoundHandler(), the snapshot is taken before
the not-found handler's preReady callback populates its lifecycle hooks,
so the copied context retains preHandler: null. reply.callNotFound()
then
dispatches the not-found handler directly, skipping the preHandler that
setNotFoundHandler() declares.

This change uses the selected context as the prototype of the
route-specific
404 context instead of copying it, keeping the route's own onSend value,
so
the route-specific context stays linked to the live one and later hook
population is visible.

Adds a regression test covering the route-first declaration order.

---------

Co-authored-by: mcollina <[email protected]>
(cherry picked from commit 4176096)
@climba03003
climba03003 enabled auto-merge (squash) August 23, 2026 08:05
@climba03003
climba03003 disabled auto-merge August 23, 2026 08:06
@climba03003
climba03003 enabled auto-merge (squash) August 23, 2026 08:06
@climba03003
climba03003 merged commit e305d84 into 5.x Aug 23, 2026
17 checks passed
@climba03003
climba03003 deleted the backport-6965-to-5.x branch August 23, 2026 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants