summaryrefslogtreecommitdiff
path: root/lib/sendf.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2013-12-26 23:50:34 +0100
committerDaniel Stenberg <daniel@haxx.se>2013-12-26 23:50:34 +0100
commit2a4ee0d221555686b4a8eae87e54a19e128f7271 (patch)
treec9cdcd266a6c999397445d58df149bf8f3db87fc /lib/sendf.c
parentf88f9bed008b15d488810cd5e6bea2e5efcaff6b (diff)
downloadgnurl-2a4ee0d221555686b4a8eae87e54a19e128f7271.tar.gz
gnurl-2a4ee0d221555686b4a8eae87e54a19e128f7271.tar.bz2
gnurl-2a4ee0d221555686b4a8eae87e54a19e128f7271.zip
FILE: we don't support paused transfers using this protocol
Make sure that we detect such attempts and return a proper error code instead of silently handling this in problematic ways. Updated the documentation to mention this limitation. Bug: http://curl.haxx.se/bug/view.cgi?id=1286
Diffstat (limited to 'lib/sendf.c')
-rw-r--r--lib/sendf.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sendf.c b/lib/sendf.c
index c274203bf..8ffd43f47 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -444,10 +444,18 @@ CURLcode Curl_client_write(struct connectdata *conn,
wrote = len;
}
- if(CURL_WRITEFUNC_PAUSE == wrote)
+ if(conn->handler->flags & PROTOPT_NONETWORK) {
+ /* protocols that work without network cannot be paused. This is
+ actually only FILE:// just now, and it can't pause since the transfer
+ isn't done using the "normal" procedure. */
+ failf(data, "Write callback asked for PAUSE when not supported!");
+ return CURLE_WRITE_ERROR;
+ }
+
+ else if(CURL_WRITEFUNC_PAUSE == wrote)
return pausewrite(data, type, ptr, len);
- if(wrote != len) {
+ else if(wrote != len) {
failf(data, "Failed writing body (%zu != %zu)", wrote, len);
return CURLE_WRITE_ERROR;
}