diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/formdata.c | 5 | ||||
-rw-r--r-- | lib/mime.c | 15 |
2 files changed, 15 insertions, 5 deletions
diff --git a/lib/formdata.c b/lib/formdata.c index 129086dee..b7ea21c8c 100644 --- a/lib/formdata.c +++ b/lib/formdata.c @@ -897,7 +897,10 @@ CURLcode Curl_getformdata(struct Curl_easy *data, clen = -1; if(post->flags & (HTTPPOST_FILENAME | HTTPPOST_READFILE)) { - result = curl_mime_filedata(part, file->contents); + if(!strcmp(file->contents, "-")) + result = Curl_mime_file(part, stdin, 0); + else + result = curl_mime_filedata(part, file->contents); if(!result && (post->flags & HTTPPOST_READFILE)) result = curl_mime_filename(part, NULL); } diff --git a/lib/mime.c b/lib/mime.c index 11d387d62..9e1336475 100644 --- a/lib/mime.c +++ b/lib/mime.c @@ -634,8 +634,18 @@ static int mime_part_rewind(struct Curl_mimepart *part) targetstate = MIMESTATE_BODY; if(part->state.state > targetstate) { res = CURL_SEEKFUNC_CANTSEEK; - if(part->seekfunc) + if(part->seekfunc) { res = part->seekfunc(part->arg, part->origin, SEEK_SET); + switch(res) { + case CURL_SEEKFUNC_OK: + case CURL_SEEKFUNC_FAIL: + case CURL_SEEKFUNC_CANTSEEK: + break; + default: + res = CURL_SEEKFUNC_FAIL; + break; + } + } } if(res == CURL_SEEKFUNC_OK) @@ -907,9 +917,6 @@ CURLcode curl_mime_filedata(struct Curl_mimepart *part, const char *filename) if(!part || !filename) return CURLE_BAD_FUNCTION_ARGUMENT; - if(!strcmp(filename, "-")) - return Curl_mime_file(part, stdin, 0); - if(stat(filename, &sbuf) || access(filename, R_OK)) result = CURLE_READ_ERROR; |