You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bug symfony#42033 [HttpFoundation] Fix deleteFileAfterSend on client abortion (nerg4l)
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[HttpFoundation] Fix deleteFileAfterSend on client abortion
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fixsymfony#27538 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/releases):
- Always add tests and ensure they pass.
- Never break backward compatibility (see https://symfony.com/bc).
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too.)
- Features and deprecations must be submitted against branch 5.x.
- Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
-->
**Description**
If someone sets `deleteFileAfterSend` to `true` for a `BinaryFileResponse` instance they expect the file to be deleted when the response finished. This is not the case when the response is cancelled because PHP won't continue running the code. `ignore_user_abort` can be used to allow it to finish but this means `stream_copy_to_stream` will also continue to run regardless of the abort. To fix this later problem it can be a solution to run the copy in a loop and detect the connect abort manually with `connection_aborted`.
**Tests**
I don't know how can I simulate connection abort in PHPUnit. I would appreciate if I could get some guidance if it is possible.
**Todo**
- [ ] add tests if connection abort can be simulated
- [ ] gather feedback for my changes
Commits
-------
f097bef [HttpFoundation] Fix deleteFileAfterSend on client abortion
0 commit comments