Revisiting curl_multi_info_read() returning result of CURLE_RECV_ERROR
Date: Wed, 20 Apr 2016 11:26:32 +0800
Can I enlist your considerable experience to help me out of this bind,
I am revisiting this issue we encountered last October. Please see
https://curl.haxx.se/mail/lib-2015-10/0020.html for the backgrounder.
*> We had a C++ code using libcurl running for the past five or so years,
*> working fine until this week. *
*> This is a service that connects to a HTTPS-based IBM Websphere. It sends
*> receives financial transactions. We don't operate the web server i.e.
*> is third-party and hence, we have no control over it. *
*> Here's what stumping us: *
*> 1. The exact same program, if connected through a proxy server to the
*> web server, runs without any errors. This service continues to run with *
*> nary a blip. *
*> 2. The same code, running on a different server with NO proxy i.e.
*> connected to the web-server via a firewall, has decided to act up. *
*> Starting this past Monday, we've been consistently getting the *
*> CURLE_RECV_ERROR "Failure when receiving data from the peer" after a *
*> successful POST. *
We have since upgraded the stack to libcurl 7.44 with OpenSSL 1.0.2d,and
yet we still have the same issues as before. So, it doesn't seem to be
related to old version of libcurl or OpenSSL.
The workaround we left in place was to connect to the website via a
software proxy on our server. Has worked well so far - but we cannot leave
the proxy running there forever.
We have also captured Wireshark traces for both the "premature
disconnection without proxy" and "no disconnection error with proxy"
Here is the filtered trace from Wireshark for the good case with the
software proxy -- this works fine, requests and responses flow as
expected. Apologies firstly for attaching an image -- I don't know how to
put in the traces in textform without having to redo all the formatting.
[image: Inline image 1]
And, here is the trace of the same situation, but this time removing the
software proxy. There are now a few resets coming from the libcurl side,
NOT the peer host.
[image: Inline image 2]
Here is the issue. I don't know why the libcurl-side is sending a RST -- I
don't understand TCP/IP in all its glory, so please forgive me if I'm
missing something obvious here.
I covet any input you folks can give me. Thank you very much in advance.