aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/http.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/http.c b/lib/http.c
index 356741fe8..cb330c6cf 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2506,9 +2506,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
return CURLE_HTTP_POST_ERROR;
}
- /* set the read function to read from the generated form data */
- http->form.fread_func = conn->fread_func; /* get the previously set callback
- function pointer */
+ /* Get the currently set callback function pointer and store that in the
+ form struct since we might want the actual user-provided callback later
+ on. The conn->fread_func pointer itself will be changed for the
+ multipart case to the function that returns a multipart formatted
+ stream. */
+ http->form.fread_func = conn->fread_func;
+
+ /* Set the read function to read from the generated form data */
conn->fread_func = (curl_read_callback)Curl_FormReader;
conn->fread_in = &http->form;