A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Find a file
ambikeesshh e2ca8408c4
cf-socket: set scope_id for IPv6 link-local addresses
When connecting to an mDNS hostname that resolves to an IPv6 link-local
address, connect() fails with EINVAL because sin6_scope_id is 0. This is
a regression since 8.20.0 where the threaded resolver started splitting
A and AAAA queries into separate getaddrinfo calls. The AAAA-only call
with PF_INET6 may not set scope_id on systems where the same call with
PF_UNSPEC did.

When the resolver does not provide scope_id for a link-local address,
try to determine it from the system's network interfaces using
getifaddrs(). Also add scope_id to verbose connect output so the value
can be seen in curl -v logs.

Built and tested locally on Linux. checksrc passes.

Fixes #21669
Reported-by: Bartel Sielski
Closes #21728
2026-05-28 08:43:53 +02:00
.circleci
.github GHA: update dependency cloudflare/quiche to v0.29.1 2026-05-27 22:38:29 +02:00
CMake cmake: opt in MSVC_VERSION 1951 to picky warnings 2026-05-21 15:16:21 +02:00
docs INSTALL-CMAKE.md: document H2O config variable 2026-05-27 16:53:57 +02:00
include tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
lib cf-socket: set scope_id for IPv6 link-local addresses 2026-05-28 08:43:53 +02:00
LICENSES
m4 m4: drop redundant conditions in TLS library detections 2026-05-27 23:26:20 +02:00
projects tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
scripts checksrc: detect curlx_safefree() opportunities 2026-05-21 11:07:34 +02:00
src tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
tests unit3400: repair after capsule_encap_udp_hdr went static 2026-05-28 00:13:24 +02:00
.clang-tidy.yml clang-tidy: enable more checks, fix fallouts 2026-04-14 02:20:16 +02:00
.dir-locals.el
.editorconfig
.git-blame-ignore-revs
.gitattributes
.gitignore
.mailmap mailmap: cmeister2@gmail is primary for Max Dymond 2026-05-24 12:02:26 +02:00
acinclude.m4 build: omit zlib pkg-config reference for Android 2026-05-17 13:27:06 +02:00
appveyor.sh appveyor: bump to OpenSSL 3.6 2026-04-22 09:29:05 +02:00
appveyor.yml CI: set DO_NOT_TRACK=1 2026-04-23 11:22:35 +02:00
CHANGES.md
CMakeLists.txt HTTP/3: add proxy CONNECT and MASQUE CONNECT-UDP support (ngtcp2 QUIC) 2026-05-27 08:49:53 +02:00
configure.ac tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
COPYING
curl-config.in
Dockerfile Dockerfile: fix typo in variable name 2026-05-20 13:01:56 +02:00
GIT-INFO.md
libcurl.pc.in
Makefile.am
README
README.md
RELEASE-NOTES tidy-up: miscellaneous 2026-05-27 16:53:57 +02:00
renovate.json renovate: use standard bump formula for OpenSSL 2026-04-15 10:17:33 +02:00
REUSE.toml
SECURITY.md

curl logo

curl is a command-line tool for transferring data from or to a server using URLs. It supports these protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS.

Learn how to use curl by reading the man page or everything curl.

Find out how to install curl by reading the INSTALL document.

libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl man page to learn how.

Open Source

curl is Open Source and is distributed under an MIT-like license.

Contact

Contact us on a suitable mailing list or use GitHub issues/ pull requests/ discussions.

All contributors to the project are listed in the THANKS document.

Commercial support

For commercial support, maybe private and dedicated help with your problems or applications using (lib)curl visit the support page.

Website

Visit the curl website for the latest news and downloads.

Source code

Download the latest source from the Git server:

git clone https://github.com/curl/curl

Security problems

Report suspected security problems privately and not in public.

Backers

Thank you to all our backers 🙏 Become a backer.

Sponsors

Support this project by becoming a sponsor.