Den 2022-11-23 kl. 09:28, skrev Daniel Hallberg via curl-library:
Hello,
I want to move my backend software to a new server but when running it on the new server I often (but not always) get "CURLcode: 35 (SSL connect error)" for some unknown reason (I don't think I've ever seen that issue on the old server). The backend source code is identical on the servers, the difference I see is that the new server has newer curl & OpenSSL available:

Old server:
Backend build 384 starting.
libcurl info:
-> age: 7
-> version: 7.74.0-DEV
-> ssl_version: OpenSSL/1.1.1f
-> features: AsynchDNS HTTP2 HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets libz
-> libz_version: 1.2.11
-> protocols: dict file ftp ftps gopher http https imap imaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
-> ares: 1.15.0
-> libidn: 0
-> libssh_version: 0
-> brotli_version: 0
OpenSSL threading supported

New server:
Backend build 384 starting.
libcurl info:
-> age: 9
-> version: 7.86.0
-> ssl_version: OpenSSL/3.0.2
-> features: AsynchDNS HTTP2 HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets libz
-> libz_version: 1.2.11
-> protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
-> ares: 1.18.1
-> libidn: 0
-> libssh_version: 0
-> brotli_version: 0
OpenSSL threading supported


Any suggestions where to look / how to debug the issue?
Maybe there is some timeout I don't set in my code which was no problem with the old curl version, but that the newer curl version use another default value or something? Or do you think it has to do with the different OpenSSL versions?

Best regards,
Daniel

Here's how I use curl btw:

CURLcode res;
CURL *curl = curl_easy_init();

#ifdef DEBUG_CURL
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, debug_callback);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
#endif

if (!curl) {
    FILE_LOG(logERROR)<<"Error starting curl";
    return false;
}

struct curl_slist *header = NULL;
header = curl_slist_append(header, "Accept-Language: sv");
header = curl_slist_append(header, "Accept: application/json");

//If we are authenticated, use our credentials
if(this->sessionKey != "")
{
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
    curl_easy_setopt(curl, CURLOPT_USERNAME, this->sessionKey.c_str());
    curl_easy_setopt(curl, CURLOPT_PASSWORD, this->sessionKey.c_str());
}

curl_easy_setopt(curl, CURLOPT_URL,             murl.c_str());

if(method == "POST")
{
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, data.length());
}
else if(method == "POST-JSON")
{
    header = curl_slist_append(header, "Content-Type: application/json");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, data.length());
}
else if(method == "GET")
{
    //Just don"t set post data
}
else if(method == "DELETE"){
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE");
}else if(method == "PUT"){
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
    header = curl_slist_append(header, "Content-Type: application/json");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str());
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, data.length());
}

curl_easy_setopt(curl, CURLOPT_HTTPHEADER,         header);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, this->CurlWrite_CallbackFunc_StdString);
curl_easy_setopt(curl, CURLOPT_WRITEDATA,         &s);
curl_easy_setopt(curl, CURLOPT_SHARE,             sslShare);

curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);

res = curl_easy_perform(curl);

curl_slist_free_all(header);
curl_easy_cleanup(curl);
--
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to