Отправка сообщений для скручивания через несколько потоков, и время от времени я получаю одну из следующих ошибок:
curl_easy_perform (): ошибка подключения ssl.sschannel: следующий initializesecuritycontext не выполнен: SEC_E_MESSAGE_ALTERED
curl_easy_perform (): ошибка подключения ssl.sschannel: следующий initializesecuritycontext не выполнен: SEC_E_BUFFER_SMALL
На данный момент я решаю эту проблему, повторно отправляя запрос.Но почему возникает эта ошибка (работает тот же запрос в течение следующих 40 секунд) и что можно сделать, чтобы этого избежать.
Исходный код написан на C ++.LibCurl был построен с использованием Microsoft Visual Studio 2010. Ниже приведен код, который вызывает библиотеку curl.
CURL *curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "connection-page");
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestToPost.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(requestToPost.c_str()));
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerInfo);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_data);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlErrorbuffer);
std::stringstream resPonseInfo;
std::stringstream headerResponse;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resPonseInfo);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &headerResponse);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
res = curl_easy_perform(curl);
if ((res != CURLE_OK))
{
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
std::cout << "Request === " << std::endl;
std::cout << requestToPost << std::endl;
std::cout << "Error === " << std::endl;
std::cout << curlErrorbuffer << std::endl;
std::cout << "Header == " << std::endl << headerResponse.str() << std::endl;
std::cout << "Response == " << std::endl << resPonseInfo.str() << std::endl;
}
else // if(res == CURLE_OK)
{
std::cout << "Response from the http post was successful " << std::endl;
responseInfo = resPonseInfo.str();
}
curl_easy_cleanup(curl);
curl = NULL;
}