Commit db5a13d
committed
fix: end a listing whose peer stopped reading
The idle deadline covered RETR and the command stage only, so a LIST,
NLST or MLSD that stopped being read had nothing to end it: the server
retried its failing writes until the client gave up, and the session
stayed open holding the queued send buffer. Observed on an ESP32-S3
with internal DRAM exhausted, 415 rounds before the run was stopped by
hand.
Listings refresh the deadline whenever the peer takes bytes, so
covering them ends only the ones that stopped moving. STOR refreshes
nothing yet and stays out.1 parent 20744d8 commit db5a13d
1 file changed
Lines changed: 7 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
448 | 448 | | |
449 | 449 | | |
450 | 450 | | |
451 | | - | |
452 | | - | |
453 | | - | |
454 | | - | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
455 | 457 | | |
456 | 458 | | |
457 | | - | |
| 459 | + | |
458 | 460 | | |
459 | 461 | | |
460 | 462 | | |
| |||
0 commit comments