summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2017-02-25 17:26:03 +0100
committerAraq <rumpf_a@web.de>2017-02-25 17:26:03 +0100
commit45765601e051fa26568b1897ea4a0ffb9bb45145 (patch)
tree2e1eaf8be4d4e64cbdc60aa5ab3076cff7852914 /lib/pure
parent1961e444c32903d5046f078630e90716c17dff62 (diff)
downloadNim-45765601e051fa26568b1897ea4a0ffb9bb45145.tar.gz
fixed premature finishing of httpclient.downloadFile
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/asyncfile.nim6
-rw-r--r--lib/pure/httpclient.nim14
2 files changed, 8 insertions, 12 deletions
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim
index 5a23f3ba2..adfe6edba 100644
--- a/lib/pure/asyncfile.nim
+++ b/lib/pure/asyncfile.nim
@@ -484,7 +484,5 @@ proc writeFromStream(f: AsyncFile, fut: FutureStream[string]) {.async.} =
     else:
       break
 
-proc getWriteStream*(f: AsyncFile): FutureStream[string] =
-  ## Returns a new stream that can be used for writing to the file.
-  result = newFutureStream[string]()
-  asyncCheck writeFromStream(f, result)
+proc setWriteStream*(f: AsyncFile; fut: FutureStream[string]) {.async.} =
+  await writeFromStream(f, fut)
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim
index 4f26c078a..8793c3f77 100644
--- a/lib/pure/httpclient.nim
+++ b/lib/pure/httpclient.nim
@@ -1247,16 +1247,14 @@ proc downloadFile*(client: HttpClient | AsyncHttpClient,
     client.bodyStream = newFileStream(filename, fmWrite)
     if client.bodyStream.isNil:
       fileError("Unable to open file")
-  else:
-    var f = openAsync(filename, fmWrite)
-    client.bodyStream = f.getWriteStream()
-
-  await parseBody(client, resp.headers, resp.version)
-
-  when client is HttpClient:
+    parseBody(client, resp.headers, resp.version)
     client.bodyStream.close()
   else:
+    client.bodyStream = newFutureStream[string]()
+    var f = openAsync(filename, fmWrite)
+    asyncCheck parseBody(client, resp.headers, resp.version)
+    await f.setWriteStream(client.bodyStream)
     f.close()
 
   if resp.code.is4xx or resp.code.is5xx:
-    raise newException(HttpRequestError, resp.status)
\ No newline at end of file
+    raise newException(HttpRequestError, resp.status)