fix(httpd): return 400 when GET /user/dirs path is a file - #2292
Open
vulragrag-star wants to merge 1 commit into
Open
vulragrag-star wants to merge 1 commit into
vulragrag-star wants to merge 1 commit into
Conversation
Stat the path before streaming directory JSON so a regular file no longer yields HTTP 200 with a truncated "[" body (ErrAbortHandler). Also reject non-directories in OsFs/CryptFs ReadDir so local backends fail before the first Readdir call. Fixes drakkan#2277
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Checklist for Pull Requests
Problem
GET /api/v2/user/dirs?path=/filefor an existing regular file returned HTTP 200 with a truncated[body and closed the connection (curl: (52) Empty reply from server). Missing paths already returned 404; a file path was indistinguishable from a network failure.Cause
OsFs.ReadDir/CryptFs.ReadDiropen the path successfully even when it is a regular file, then fail on the firstReaddir.streamJSONArrayhad already written status 200 and[, so the handler could only abort viahttp.ErrAbortHandler.Fix
readUserFolderand return 400 when it is not a directory (same shape asgetUserFilewhen the path is a directory).ReadDirimplementations before returning a lister.Tests
Fixes #2277