2

I am building a Rest client with cpprest-sdk to communicate with a web service. The problem is that every once in a while, after sending multiple successful requests (around 50), I get the exception:

WinHttpSendRequest: 2148074273 insufficient cache in function

Or sometimes:

ERROR_WINHTTP_SECURE_FAILURE (12175)

I tried to look for cache options in cpprest-sdk but did not find anything. Since the exceptions happens inside cpprest-sdk when I call .wait() on my task I am not sure if I can use the WINHTTP_STATUS_CALLBACK to check for more details on this error. How can I investigate deeper to find the cause of this error?

Here is my Rest request:

void MyRestClient::PostKeys(const std::string & sKek, const std::string & sKid, const std::string & sCustomerAuthenticator) {
    uri_builder oBuilder(U("/keys?customerAuthenticator=") + to_string_t(sCustomerAuthenticator));
    oBuilder.append_query(KEK, to_string_t(sKek));
    json::value oBody;
    oBody[KID] = json::value::string(to_string_t(sKid));

    web::http::http_request oRequest;
    oRequest.set_method(methods::POST);
    oRequest.set_request_uri(oBuilder.to_uri());
    oRequest.set_body(oBody);

    m_oCurrentTask = oClient.request(oRequest).then([this](http_response oResponse) {
        OnPostResponse(oResponse);
    });
 }

According to https://msdn.microsoft.com/en-us/library/windows/desktop/aa383928(v=vs.85).aspx (4th bullet), Post requests should not be cached so I don't understand why I am getting the first exception. I also tried to disable Https caching as the 6th bullet in the link suggest, but that did not change anything.

Did anyone experienced something similar or have any insight as to what may be happening? Or is this a normal behavior and should I just retry my request when these exceptions happens?

  • Possible duplicate of [What is causing intermittent SEC\_E\_BUFFER\_TOO\_SMALL error coming from WinHttpSendRequest?](https://stackoverflow.com/questions/38752888/what-is-causing-intermittent-sec-e-buffer-too-small-error-coming-from-winhttpsen) – Lyth Aug 04 '17 at 07:11

1 Answers1

2

Does your Web Service use TLS with Diffie-Hellman key exchange? If yes, you are probably seeing a bug in SChannel, which is the SSL implementation of Windows, see here for a confirmation. Unfortunately, the only available fix is an update of the Windows version on which your client is running to a recent build of Windows 10.