From f836f070b35d2f360412450ec88c6dc415cf9365 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 23 Apr 2021 12:21:04 +0100 Subject: Handle receiving outputs as a bytevector This can happen if the request doesn't arrive in chunks. --- guix-build-coordinator/agent-messaging/http/server.scm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/guix-build-coordinator/agent-messaging/http/server.scm b/guix-build-coordinator/agent-messaging/http/server.scm index 0dd453c..c4734c9 100644 --- a/guix-build-coordinator/agent-messaging/http/server.scm +++ b/guix-build-coordinator/agent-messaging/http/server.scm @@ -441,8 +441,16 @@ port. Also, the port used can be changed by passing the --port option.\n" (mkdir-p (dirname output-file-name)) (when (file-exists? tmp-output-file-name) (delete-file tmp-output-file-name)) - (if (receive-file output-file-name - tmp-output-file-name) + (if (if (bytevector? body) + (begin + (call-with-output-file tmp-output-file-name + (lambda (output-port) + (put-bytevector output-port body))) + (rename-file tmp-output-file-name + output-file-name) + #t) + (receive-file output-file-name + tmp-output-file-name)) (no-content) (render-json "error" -- cgit v1.2.3