diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-09-17 22:00:26 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-09-17 22:10:31 +0200 |
commit | 3809824199cdd52446176c9cd4761dd09f732542 (patch) | |
tree | c895b78c0f2b317b7aceb586313686034189bd4b | |
parent | d68aa41573bff6614a73ea28249cfd88fe206d38 (diff) | |
download | guix-3809824199cdd52446176c9cd4761dd09f732542.tar guix-3809824199cdd52446176c9cd4761dd09f732542.tar.gz |
store: Add missing buffer flushes.
This could result in deadlock in unusual situations, whereby we'd start
waiting for a reply while the query hasn't been flushed to the socket.
* guix/store.scm (buffering-output-port)[flush]: Add call to
'force-output'.
(add-to-store): Add call to 'write-buffered-output'.
-rw-r--r-- | guix/store.scm | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/guix/store.scm b/guix/store.scm index af7f6980cf..cc5dcef247 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -770,6 +770,7 @@ bytevector) as its internal buffer, and a thunk to flush this output port." (define (flush) (put-bytevector port buffer 0 total) + (force-output port) (set! total 0)) (define (write bv offset count) @@ -927,6 +928,7 @@ path." (write-int (if recursive? 1 0) port) (write-string hash-algo port) (write-file file-name port #:select? select?) + (write-buffered-output server) (let loop ((done? (process-stderr server))) (or done? (loop (process-stderr server)))) (read-store-path port))))) |