-
-
Notifications
You must be signed in to change notification settings - Fork 996
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add error handling for nil RouteContext in URLFormat #841
base: master
Are you sure you want to change the base?
Conversation
|
||
r.Use(func(next http.Handler) http.Handler { | ||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | ||
newCtx := context.WithValue(r.Context(), chi.RouteCtxKey, nil) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @Taaipi,
Thanks for the PR!
It looks like this test cases injects a nil
RouteContext down the chain intentionally.
Do you have an example how could this happen in real-world use case? I wonder how is the middleware.URLFormat
ever called without chi route context unless we set it to nil
explicitly.
Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess based on #718, it'd be better to create a test case with some sub-routers (instead of setting nil
). Right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you using middleware.URLFormat outside of chi router?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@VojtechVitek
Thank you for the review.
Are you using middleware.URLFormat outside of chi router?
Yes, this issue could arise if middleware.URLFormat is used outside of the chi router or if RouteContext is explicitly set to nil (though I haven’t fully grasped the intent behind such a scenario based on issue #839). However, since encountering such a problem is conceivable, even though it remains an edge case, I’ve added error handling to catch and address it early.
For now, I will omit the case where nil is intentionally assigned. Instead, I’m considering adding a test case for error handling when the router is not used. What do you think?
Fix #839
Ref #718
In the current URLFormat middleware implementation, when rctx (Route Context) is nil, it could lead to unexpected behavior or panic errors in subsequent processing.
To avoid this, I have prioritized not allowing unexpected behavior by implementing error handling for the cases where rctx is missing or nil. Now, instead of failing silently or causing a panic error, the system will return a proper HTTP error response.
This change ensures that the system behaves consistently and avoids potential pitfalls that might arise from missing or improperly initialized rctx.