~ruther/guix-local

0ff3e3aa9bea8c82c921db88fc03cb7361b886f7 — Ludovic Courtès 13 years ago 6858f9d
daemon: Gracefully handle cases where the daemon does not return a status code.

* guix/store.scm (process-stderr): Check for EOF before doing (read-int p).
1 files changed, 4 insertions(+), 1 deletions(-)

M guix/store.scm
M guix/store.scm => guix/store.scm +4 -1
@@ 336,7 336,10 @@ encoding conversion errors."
             #f))
          ((= k %stderr-error)
           (let ((error  (read-latin1-string p))
                 (status (if (>= (nix-server-minor-version server) 8)
                 ;; Currently the daemon fails to send a status code for early
                 ;; errors like DB schema version mismatches, so check for EOF.
                 (status (if (and (>= (nix-server-minor-version server) 8)
                                  (not (eof-object? (lookahead-u8 p))))
                             (read-int p)
                             1)))
             (raise (condition (&nix-protocol-error