Skip to content

Fix: Ensure MultipartForm is properly restored to the original request#777

Open
fanyiboaa wants to merge 1 commit intogorilla:mainfrom
fanyiboaa:restored-mltipartform-to-request
Open

Fix: Ensure MultipartForm is properly restored to the original request#777
fanyiboaa wants to merge 1 commit intogorilla:mainfrom
fanyiboaa:restored-mltipartform-to-request

Conversation

@fanyiboaa
Copy link
Copy Markdown

@fanyiboaa fanyiboaa commented Dec 22, 2024

What type of PR is this? (check all applicable)

  • Refactor
  • Feature
  • Bug Fix
  • Optimization
  • Documentation Update
  • Go Version Update
  • Dependency Update

Description

This PR fixes an issue related to the shallow copy of the HTTP request (req), which prevents the proper cleanup of temporary files created by MultipartForm. The shallow copy causes req.MultipartForm to be modified without reflecting these changes back to the original request (originReq), leading to the failure to release temporary files.

To resolve this, a deferred function has been added to ensure that req.MultipartForm is correctly restored to originReq at the end of the request handling. This will allow the net/http server to properly release any temporary files associated with the MultipartForm.

The code for releasing temporary files is located at server.go line 1726 in the net/http package.

Related Tickets & Documents

  • This PR addresses the issue without a specific related issue number.

Added/updated tests?

  • Yes
  • No, and this is why: please replace this line with details on why tests
    have not been included
  • I need help with writing tests

Run verifications and test

  • make verify is passing
  • make test is passing

@fanyiboaa fanyiboaa marked this pull request as ready for review December 22, 2024 16:06
@fanyiboaa fanyiboaa force-pushed the restored-mltipartform-to-request branch from d4c3ff2 to 5b2c266 Compare March 23, 2026 13:23
@fanyiboaa fanyiboaa force-pushed the restored-mltipartform-to-request branch from 5b2c266 to 332d423 Compare March 23, 2026 13:23
@fanyiboaa
Copy link
Copy Markdown
Author

Defer copying req.MultipartForm onto the captured *http.Request on exit covers the case where req gets reassigned after matching. nit: the comment block is longer than the code—one line on shallow copy is plenty.

Thanks for the point! I've simplified the comment to keep it concise.

@fanyiboaa fanyiboaa requested a review from themavik March 23, 2026 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant