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
Daniel Stenberg 831a151484
urlapi: consume trailing dots after IPv4 numerical addresses
If the hostname is specified as an IPv4 numerical address and it is
followed by a single dot, acccept that as a valid IPv4 and remove the
dot when normalizing.

This prevents otherwise legitimate IPv4 hostnames to have trailing dots.
Seems to match what browsers do.

Extended test 1560 to verify.

Closes #21635
2026-05-15 23:38:50 +02:00
.circleci
.github libssh: add support for SHA256 host public keys 2026-05-15 11:49:06 +02:00
CMake cmake: export/forward NGTCP2_CRYPTO_BACKEND 2026-05-11 21:53:39 +02:00
docs CURLOPT_SHARE: warn about early remove 2026-05-15 16:15:28 +02:00
include tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
lib urlapi: consume trailing dots after IPv4 numerical addresses 2026-05-15 23:38:50 +02:00
LICENSES spacecheck: check long lines and repeat spaces, fix fallouts 2026-03-25 11:02:08 +01:00
m4 gnutls: allow building with nettle 4.0 2026-05-12 03:54:24 +02:00
projects tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
scripts pythonlint.sh: make it fail on error, fix ruff warnings in pytest 2026-05-13 22:59:36 +02:00
src tidy-up: prefer "initialize" with a 'z' 2026-05-15 11:49:06 +02:00
tests urlapi: consume trailing dots after IPv4 numerical addresses 2026-05-15 23:38:50 +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 buildconf: remove 2026-04-04 11:35:24 +02:00
.gitignore
.mailmap tool: fix two more allocator mismatches 2026-03-30 16:17:42 +02:00
acinclude.m4 configure: tidy up comments 2026-04-10 23:19:41 +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 cmake: merge if blocks (tidy-up) 2026-05-13 22:47:56 +02:00
configure.ac configure: tidy up comments 2026-04-10 23:19:41 +02:00
COPYING
curl-config.in
Dockerfile Dockerfile: update debian:bookworm-slim Docker digest to 67b30a6 2026-05-09 15:33:09 +02:00
GIT-INFO.md
libcurl.pc.in
Makefile.am
README
README.md
RELEASE-NOTES THANKS-filter: update 2026-05-13 00:43:27 +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.