diff --git a/scheme/ftpd/ftpd.scm b/scheme/ftpd/ftpd.scm index 2c31148..06681bd 100644 --- a/scheme/ftpd/ftpd.scm +++ b/scheme/ftpd/ftpd.scm @@ -292,7 +292,11 @@ (define (set-ftp-socket-options! socket) ;; If the client closes the connection, we won't lose when we try to ;; close the socket by trying to flush the output buffer. - (set-port-buffering (socket:outport socket) bufpol/none) + ;; ... only it somehow exposes a bug in Windows Internet Explorer + ;; so we leave it disabled. + ;; (set-port-buffering (socket:outport socket) bufpol/none) + + (set-socket-option socket level/socket tcp/no-delay #t) (set-socket-option socket level/socket socket/oob-inline #t)) @@ -1200,7 +1204,8 @@ (define (write-final-reply line) (format (session-control-output-port) "~D ~A" (session-reply-code) line) (log (syslog-level debug) "Reply: ~D ~A~%" (session-reply-code) line) - (write-crlf (session-control-output-port))) + (write-crlf (session-control-output-port)) + (force-output (session-control-output-port))) (define (write-nonfinal-reply line) (format (session-control-output-port) "~D-~A" (session-reply-code) line) @@ -1218,7 +1223,7 @@ ; Version -(define *ftpd-version* "$Revision: 1.1 $") +(define *ftpd-version* "$Revision: 1.2 $") (define (copy-port->port-binary input-port output-port) (let ((buffer (make-string *window-size*)))