Skip to content

Conversation

@procr1337
Copy link

@procr1337 procr1337 commented Aug 29, 2025

Disclaimer: A lot of this code was written with AI assistance. I reviewed it & improved the test coverage.

Additional fixes (in separate commits which can be cherry-picked if needed):

  1. MLST output was incorrect/out of spec. Output was something like 213 <facts> filename, where it should be a multi-line format initiated by 250- and ended by 250 , as per https://datatracker.ietf.org/doc/html/rfc3659#section-7.2
  2. There was a small bug where uid was used instead of gid for MLST facts
  3. As noted correclty by @LLeny, facts list must be terminated by semicolon. Grammar from RFC: facts = 1*( fact ";" )

Since async_ftp does not support MLST nor MLSD, we (Claude and me :) added manual TCP-based tests for both commands in the existing sbe-fs integration test suite. This is obviously weaker since we don't have a compliant client to check against. In addition, I manually tested this against rclone's FTP client and FileZilla.

@procr1337 procr1337 marked this pull request as ready for review August 29, 2025 09:05
@procr1337 procr1337 mentioned this pull request Aug 29, 2025
@procr1337 procr1337 changed the title Initial MLSD implementation Implement MLSD & small fixes for MLST Aug 29, 2025
@procr1337 procr1337 changed the title Implement MLSD & small fixes for MLST Implement MLSD & fix MLST Aug 29, 2025
@LLeny
Copy link

LLeny commented Oct 21, 2025

Small issue, I believe the rfc states that all facts must end with a ';', even the last one.
It's problematic with the rclone ftp implementation.

@procr1337
Copy link
Author

@LLeny you are absolutely right, thank you! I didn't encounter any issues in my testing with rclone however

@LLeny
Copy link

LLeny commented Nov 3, 2025

@procr1337 For reference, I did, there: LLeny/proton-drive-bridge#9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants