From 560800246e71f4fadb83f75620e22ea9fc1976b1 Mon Sep 17 00:00:00 2001 From: xioren <40043405+xioren@users.noreply.github.com> Date: Thu, 11 Mar 2021 23:09:39 -0800 Subject: [PATCH] Relocate 4xx/5xx exception in downloadFile (#17332) [backport:1.2] Move 4xx/5xx exception to before disk i/o. As it stands an empty file is created on http error 4xx/5xx. (cherry picked from commit 3d198fdcc237aa3927ad5c3b934688de24499b03) --- lib/pure/httpclient.nim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 129ce4e77d..0083d816c0 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -1155,15 +1155,15 @@ proc downloadFile*(client: HttpClient, url: string, filename: string) = client.getBody = true let resp = client.get(url) + if resp.code.is4xx or resp.code.is5xx: + raise newException(HttpRequestError, resp.status) + client.bodyStream = newFileStream(filename, fmWrite) if client.bodyStream.isNil: fileError("Unable to open file") parseBody(client, resp.headers, resp.version) client.bodyStream.close() - if resp.code.is4xx or resp.code.is5xx: - raise newException(HttpRequestError, resp.status) - proc downloadFile*(client: AsyncHttpClient, url: string, filename: string): Future[void] = proc downloadFileEx(client: AsyncHttpClient,