I did this
curl https://www.google.com/
I expected the following
Instead of a success, curl always returns:
curl: (6) getaddrinfo() thread failed to start
curl/libcurl version
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel
Release-Date: 2022-05-13
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets
operating system
Windows 10 x64
possible cause
I was able to trace this problem to https://github.com/curl/curl/blob/master/lib/socketpair.c#L126
Apparently, curl on Windows simulates unix socket pair with a pair of regular TCP sockets on 127.0.0.1.
If the system (like in my case) runs a program that works as a proxy for this connection, socket addresses (ports) mismatch and Curl_socketpair fails.
I guess, the problem is widespread and cryptic. There is a number of antiviruses, firewalls, tunneling and monitoring software that proxy 127.0.0.1 connections and can cause this problem. At the same time, Curl_socketpair call does not provide any error messages. The top level getaddrinfo() error is very hard to track to this.
I experienced this problem when using git for Windows (curl based) together with Proxifier tool.
I propose to remove a.inaddr.sin_port != a2.inaddr.sin_port condition or perform peer validation with a chunk of a random data transmitted over the socket (recv/send calls).
I did this
curl https://www.google.com/I expected the following
Instead of a success, curl always returns:
curl: (6) getaddrinfo() thread failed to startcurl/libcurl version
operating system
Windows 10 x64
possible cause
I was able to trace this problem to https://github.com/curl/curl/blob/master/lib/socketpair.c#L126
Apparently, curl on Windows simulates unix socket pair with a pair of regular TCP sockets on 127.0.0.1.
If the system (like in my case) runs a program that works as a proxy for this connection, socket addresses (ports) mismatch and Curl_socketpair fails.
I guess, the problem is widespread and cryptic. There is a number of antiviruses, firewalls, tunneling and monitoring software that proxy 127.0.0.1 connections and can cause this problem. At the same time, Curl_socketpair call does not provide any error messages. The top level getaddrinfo() error is very hard to track to this.
I experienced this problem when using git for Windows (curl based) together with Proxifier tool.
I propose to remove
a.inaddr.sin_port != a2.inaddr.sin_portcondition or perform peer validation with a chunk of a random data transmitted over the socket (recv/send calls).