diff --git a/src/managesieve/cmd-getscript.c b/src/managesieve/cmd-getscript.c
index 460b1b276cf4ae12af873c667b2535d684c00c71..27792e021077a1e241299214793afbf5575970da 100644
--- a/src/managesieve/cmd-getscript.c
+++ b/src/managesieve/cmd-getscript.c
@@ -4,6 +4,7 @@
 #include "lib.h"
 #include "ostream.h"
 #include "istream.h"
+#include "iostream.h"
 
 #include "sieve-script.h"
 #include "sieve-storage.h"
@@ -64,7 +65,9 @@ static bool cmd_getscript_continue(struct client_command_context *cmd)
 				sieve_script_location(ctx->script),
 				i_stream_get_error(ctx->script_stream));
 		} else {
-			client_disconnect(ctx->client, NULL);
+			client_disconnect(ctx->client,
+				io_stream_get_disconnect_reason
+					(client->input, client->output));
 		}
 		ctx->failed = TRUE;
 		return cmd_getscript_finish(ctx);