Repository navigation
Fix ABOR while waiting for a data connection - #216
Closed
charan-rathore wants to merge 2 commits into
Closed
charan-rathore wants to merge 2 commits into
charan-rathore wants to merge 2 commits into
Conversation
|
Author
|
Closing for now since nothing has moved here. Happy to pick it back up if a maintainer wants it. |
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.
When ABOR arrives after a transfer command but before the data socket connects, the readiness decorator receives the cancellation outside the worker's abort handler. The server closes the control connection instead of acknowledging the abort.
Move the worker decorator outside the data-connection check for LIST, MLSD, STOR (including APPE), and RETR. Cancellation during the wait now sends the existing 426/226 responses. Also cancel and drain the readiness gather when its caller is cancelled, shielding each connection future so cancellation does not break subsequent transfers.
The regression tests use a real TCP server on IPv4 and IPv6. They check both response codes and a successful download on the same control connection after the abort. A timeout control checks that the existing 425 response and later transfer still work.
Closes #205.
Validation: