Hello,
We have a problem with libcurl library with big request body when IHS (IBM HTTP
Server) is used as reverse proxy.
Library version: libcurl 7.86.0
Problem background: When we have a big request body, we receive this error
message "Failure when receiving data from the peer". This is happening only
when IHS is set as reverse proxy. This is working fine without proxy set up. We
are using libcurl with GSKit.
Our analysis: Further digging into the curl library code, we identified that
the issue might lie in "easy.c" file, in function "easy_transfer".
The suspected code line is as below:
if(!mcode)
mcode = curl_multi_perform(multi, &still_running);
If I put some delay after this code line (using sleep call), I observed that
the issue is not happening for the failed scenario. However, this is creating
unnecessary delay in processing the request (and still fail in very specific
scenario of big request).
We are suspecting the issue with synchronization and socket is getting closed
(may be??) however not sure.
We did observe that this issue is not happening with libcurl 7.76.1 library
version with IHS as reverse proxy.
Workaround identified (none is accepted though):
* Downgrade the library to 7.76.1 (Not accepted due to vulnerabilities)
* Put some delay after suspected function call. However, this is creating
unnecessary delay in processing of request.
This is creating data lost and any pointer on what has changed between the
libcurl version 7.76.1 and 7.86.0 which might have created this issue with
proxy server, is really appreciated.
Regards,
Purvi Prajapati
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html