diff options
author | Daniel Stenberg <daniel@haxx.se> | 2013-12-26 23:50:34 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-12-26 23:50:34 +0100 |
commit | 2a4ee0d221555686b4a8eae87e54a19e128f7271 (patch) | |
tree | c9cdcd266a6c999397445d58df149bf8f3db87fc /lib/sendf.c | |
parent | f88f9bed008b15d488810cd5e6bea2e5efcaff6b (diff) | |
download | curl-2a4ee0d221555686b4a8eae87e54a19e128f7271.tar.gz |
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.c | 12 |
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; } |