From a65dbd70e4ea11e5e9c52be4ea1c7814e13144ae Mon Sep 17 00:00:00 2001 From: mainzelm Date: Tue, 10 Feb 2004 12:27:57 +0000 Subject: [PATCH] On restart, set the file port to unbuffered mode before seeking to work around scsh limitiation. --- scheme/ftpd/ftpd.scm | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scheme/ftpd/ftpd.scm b/scheme/ftpd/ftpd.scm index c3a4456..a1d7538 100644 --- a/scheme/ftpd/ftpd.scm +++ b/scheme/ftpd/ftpd.scm @@ -1089,8 +1089,16 @@ (lambda (restart-position) (log (syslog-level debug) "clearing RESTART position") (set-the-session-restart-position! #f) - (seek file-port restart-position) - (log (syslog-level debug) "seeking for RESTART successful")))) + (if (not (zero? restart-position)) + (begin + ;; scsh can seek on unbuffered ports only + (set-port-buffering file-port bufpol/none) + (seek file-port restart-position) + (log (syslog-level debug) + "seeking for RESTART at position ~A successful" + restart-position)) + (log (syslog-level debug) + "Position is 0, no seek necessary"))))) (with-data-connection (lambda () (case (the-session-type) @@ -1151,8 +1159,16 @@ (lambda (restart-position) (log (syslog-level debug) "clearing RESTART position") (set-the-session-restart-position! #f) - (seek file-port restart-position) - (log (syslog-level debug) "seeking for RESTART successful")))) + (if (not (zero? restart-position)) + (begin + ;; scsh can seek on unbuffered ports only + (set-port-buffering file-port bufpol/none) + (seek file-port restart-position) + (log (syslog-level debug) + "seeking for RESTART at position ~A successful" + restart-position)) + (log (syslog-level debug) + "Position is 0, no seek necessary"))))) (with-data-connection (lambda () (let ((inport (socket:inport (the-session-data-socket))))