aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/formdata.c5
-rw-r--r--lib/mime.c15
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;