curl: fix --upload-file . hangs if delay in STDIN

Attempt to unpause a busy read in the CURLOPT_XFERINFOFUNCTION.

When uploading from stdin in non-blocking mode, a delay in reading
the stream (EAGAIN) causes curl to pause sending data
(CURL_READFUNC_PAUSE).  Prior to this change, a busy read was
detected and unpaused only in the CURLOPT_WRITEFUNCTION handler.
This change performs the same busy read handling in a
CURLOPT_XFERINFOFUNCTION handler.

Fixes #2051
Closes #4599
Reported-by: bdry on github
This commit is contained in:
John Schroeder 2019-11-26 09:16:19 +01:00 committed by Daniel Stenberg
parent 7cf18b05e0
commit 9a2cbf30b8
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
6 changed files with 63 additions and 4 deletions

View file

@ -44,6 +44,7 @@ struct per_transfer {
char *outfile;
bool infdopen; /* TRUE if infd needs closing */
int infd;
bool noprogress;
struct ProgressData progressbar;
struct OutStruct outs;
struct OutStruct heads;