├── lib ├── .gitattributes ├── .checksrc ├── .gitignore └── libcurl.vers.in ├── zuul.d └── playbooks │ └── .zuul.ignore ├── tests ├── certs │ ├── Server-localhost-sv.dhp │ ├── Server-localhost.nn-sv.dhp │ ├── Server-localhost0h-sv.dhp │ ├── Server-localhost-lastSAN-sv.dhp │ ├── Server-localhost-firstSAN-sv.dhp │ ├── EdelCurlRoot-ca.der │ ├── Server-localhost-sv.der │ ├── Server-localhost0h-sv.der │ ├── Server-localhost-sv.pub.der │ ├── Server-localhost.nn-sv.der │ ├── Server-localhost.nn-sv.pub.der │ ├── Server-localhost0h-sv.pub.der │ ├── Server-localhost-firstSAN-sv.der │ ├── Server-localhost-lastSAN-sv.der │ ├── Server-localhost-lastSAN-sv.pub.der │ ├── Server-localhost-firstSAN-sv.pub.der │ ├── EdelCurlRoot-ca.cnf │ ├── srp-verifier-db │ ├── Server-localhost-sv.pub.pem │ ├── Server-localhost0h-sv.pub.pem │ ├── Server-localhost.nn-sv.pub.pem │ ├── Server-localhost-firstSAN-sv.pub.pem │ └── Server-localhost-lastSAN-sv.pub.pem ├── data │ ├── .gitattributes │ ├── .gitignore │ ├── test1034 │ ├── test1160 │ ├── test2080 │ ├── test1652 │ ├── test1653 │ ├── test1395 │ ├── test1601 │ ├── test1611 │ ├── test1650 │ ├── test1651 │ ├── test1300 │ ├── test1612 │ ├── test1606 │ ├── test1610 │ ├── test1620 │ ├── test1661 │ ├── test1600 │ ├── test1604 │ ├── test1302 │ ├── test1303 │ ├── test1399 │ ├── test1655 │ ├── test1607 │ ├── test1609 │ ├── test1398 │ ├── test1301 │ ├── test1603 │ ├── test1605 │ ├── test1608 │ ├── test1621 │ ├── test1602 │ ├── test1396 │ ├── test1397 │ ├── test1307 │ ├── test1167 │ ├── test1394 │ ├── test1165 │ ├── test1305 │ ├── test1132 │ ├── test1175 │ ├── test1308 │ ├── test1306 │ ├── test1323 │ ├── test829 │ ├── test875 │ ├── test931 │ ├── test1304 │ ├── test1177 │ ├── test1521 │ ├── test1911 │ ├── test1409 │ ├── test1550 │ ├── test226 │ ├── test1119 │ ├── test1427 │ ├── test1912 │ ├── test1450 │ ├── test225 │ ├── test360 │ ├── test1410 │ ├── test1139 │ ├── test1530 │ ├── test1564 │ ├── test404 │ ├── test660 │ ├── test289 │ ├── test201 │ ├── test2043 │ ├── test23 │ ├── test41 │ ├── test305 │ ├── test971 │ ├── test1508 │ ├── test21 │ ├── test3016 │ ├── test1918 │ ├── test597 │ ├── test1140 │ ├── test1441 │ ├── test1442 │ ├── test1440 │ ├── test1269 │ ├── test1329 │ ├── test2044 │ ├── test923 │ ├── test1173 │ ├── test1234 │ ├── test2036 │ ├── test629 │ ├── test1289 │ ├── test1557 │ ├── test322 │ ├── test628 │ ├── test894 │ ├── test929 │ ├── test930 │ ├── test19 │ ├── test3019 │ ├── test370 │ ├── test375 │ ├── test402 │ ├── test3020 │ ├── test321 │ ├── test323 │ ├── test507 │ ├── test76 │ ├── test308 │ ├── test324 │ ├── test333 │ ├── test1069 │ ├── test1264 │ ├── test20 │ ├── test2075 │ ├── test605 │ ├── test607 │ ├── test1281 │ ├── test604 │ ├── test606 │ ├── test1592 │ ├── test219 │ ├── test1023 │ ├── test1454 │ ├── test859 │ ├── test860 │ ├── test863 │ ├── test1014 │ ├── test1200 │ ├── test1447 │ ├── test1022 │ ├── test113 │ ├── test200 │ ├── test1013 │ ├── test656 │ ├── test632 │ ├── test1169 │ ├── test1236 │ ├── test1247 │ ├── test2071 │ ├── test677 │ ├── test1000 │ ├── test1449 │ ├── test114 │ ├── test631 │ ├── test858 │ ├── test283 │ ├── test509 │ ├── test630 │ ├── test925 │ ├── test1084 │ ├── test136 │ ├── test231 │ ├── test405 │ ├── test501 │ ├── test896 │ ├── test1452 │ ├── test704 │ ├── test705 │ ├── test1018 │ ├── test1565 │ ├── test195 │ ├── test205 │ └── test928 ├── unit │ └── .gitignore ├── libtest │ ├── .checksrc │ └── .gitignore ├── server │ └── .gitignore ├── fuzz │ └── README └── .gitignore ├── winbuild └── .gitignore ├── projects └── Windows │ ├── .gitattributes │ ├── VC10 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ ├── VC11 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ ├── VC12 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ ├── VC14.10 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ ├── VC14.30 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ ├── VC14 │ ├── .gitignore │ ├── lib │ │ └── .gitignore │ └── src │ │ └── .gitignore │ └── .gitignore ├── .dcignore ├── docs ├── libcurl │ ├── curl_strnequal.3 │ ├── curl_multi_socket_all.3 │ └── .gitignore ├── .gitignore ├── examples │ └── .checksrc ├── cmdline-opts │ ├── tcp-fastopen.d │ ├── manual.d │ ├── proxy-tlsv1.d │ ├── sasl-ir.d │ ├── doh-insecure.d │ ├── proxy-key.d │ ├── data-ascii.d │ ├── proxy-insecure.d │ ├── http1.1.d │ ├── proxy-cert.d │ ├── proxy-crlfile.d │ ├── crlf.d │ ├── proxy-tlsuser.d │ ├── doh-cert-status.d │ ├── proxy-ciphers.d │ ├── proxy-key-type.d │ ├── proxy-ssl-allow-beast.d │ ├── proxy-tlspassword.d │ ├── proxy-capath.d │ ├── proxy-cert-type.d │ ├── proxy-pass.d │ ├── proxy-tlsauthtype.d │ ├── mail-from.d │ ├── proxy-cacert.d │ ├── proxy-service-name.d │ ├── raw.d │ ├── compressed-ssh.d │ ├── netrc-optional.d │ ├── unix-socket.d │ ├── metalink.d │ ├── pass.d │ ├── disable.d │ ├── proxy-ssl-auto-client-cert.d │ ├── ipv4.d │ ├── ipv6.d │ ├── tr-encoding.d │ ├── egd-file.d │ ├── data-raw.d │ ├── http1.0.d │ ├── service-name.d │ ├── retry-connrefused.d │ ├── show-error.d │ ├── ssl-no-revoke.d │ ├── tlsuser.d │ ├── ntlm-wb.d │ ├── tlspassword.d │ ├── trace-time.d │ ├── disallow-username-in-url.d │ ├── proxy-ntlm.d │ ├── form-escape.d │ ├── random-file.d │ ├── remote-time.d │ ├── tlsv1.d │ ├── ftp-pret.d │ ├── proxy-digest.d │ ├── parallel.d │ ├── ssl-revoke-best-effort.d │ ├── use-ascii.d │ ├── proxy-anyauth.d │ ├── path-as-is.d │ ├── tcp-nodelay.d │ ├── crlfile.d │ ├── engine.d │ ├── sslv2.d │ ├── sslv3.d │ ├── no-keepalive.d │ ├── styled-output.d │ ├── head.d │ ├── etag-save.d │ ├── mail-auth.d │ ├── ftp-account.d │ ├── ftp-ssl-control.d │ ├── include.d │ ├── key-type.d │ ├── telnet-option.d │ ├── proxy-negotiate.d │ ├── socks5-basic.d │ ├── tlsv1.3.d │ ├── tftp-no-options.d │ ├── proxy-basic.d │ ├── tlsv1.0.d │ ├── tlsv1.1.d │ ├── tlsv1.2.d │ ├── ftp-ssl-ccc.d │ ├── hostpubsha256.d │ ├── no-alpn.d │ ├── append.d │ ├── dns-interface.d │ ├── remove-on-error.d │ ├── socks5-gssapi.d │ ├── ftp-create-dirs.d │ ├── hostpubmd5.d │ ├── no-npn.d │ ├── abstract-unix-socket.d │ ├── ciphers.d │ ├── no-progress-meter.d │ ├── post303.d │ ├── stderr.d │ ├── tftp-blksize.d │ ├── parallel-max.d │ ├── remote-name-all.d │ ├── silent.d │ ├── speed-limit.d │ ├── request-target.d │ ├── basic.d │ ├── ftp-ssl-ccc-mode.d │ ├── local-port.d │ ├── socks5-gssapi-nec.d │ ├── globoff.d │ ├── help.d │ ├── max-redirs.d │ ├── dns-ipv4-addr.d │ ├── haproxy-protocol.d │ ├── dns-ipv6-addr.d │ ├── proxy1.0.d │ ├── compressed.d │ ├── junk-session-cookies.d │ ├── http0.9.d │ ├── krb.d │ ├── xattr.d │ ├── ftp-alternative-to-user.d │ ├── netrc-file.d │ ├── tlsauthtype.d │ ├── dns-servers.d │ ├── location-trusted.d │ ├── ssl-reqd.d │ ├── expect100-timeout.d │ ├── digest.d │ ├── false-start.d │ ├── retry-delay.d │ ├── suppress-connect-headers.d │ ├── dump-header.d │ ├── form-string.d │ ├── libcurl.d │ ├── proto-default.d │ ├── ssl-allow-beast.d │ ├── http2-prior-knowledge.d │ ├── oauth2-bearer.d │ ├── connect-timeout.d │ ├── ftp-skip-pasv-ip.d │ ├── no-buffer.d │ ├── cert-type.d │ ├── parallel-immediate.d │ ├── proxytunnel.d │ ├── post301.d │ ├── post302.d │ ├── create-file-mode.d │ ├── ignore-content-length.d │ ├── socks5-gssapi-service.d │ ├── no-sessionid.d │ ├── trace.d │ ├── ssl-auto-client-cert.d │ ├── cert-status.d │ ├── sasl-authzid.d │ └── output-dir.d ├── INSTALL └── README.md ├── .github ├── FUNDING.yml ├── lock.yml ├── ISSUE_TEMPLATE │ └── config.yml ├── workflows │ └── linkcheck.yml └── CONTRIBUTING.md ├── include ├── curl │ └── .gitignore └── README.md ├── .lift ├── config.toml └── setup.sh ├── m4 └── .gitignore ├── src └── .gitignore ├── packages └── vms │ └── macro32_exactcase.patch ├── mlc_config.json ├── CHANGES ├── .gitattributes └── SECURITY.md /lib/.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/.checksrc: -------------------------------------------------------------------------------- 1 | enable STRERROR 2 | -------------------------------------------------------------------------------- /zuul.d/playbooks/.zuul.ignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-sv.dhp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost.nn-sv.dhp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost0h-sv.dhp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-lastSAN-sv.dhp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/data/.gitattributes: -------------------------------------------------------------------------------- 1 | test* -crlf 2 | -------------------------------------------------------------------------------- /tests/data/.gitignore: -------------------------------------------------------------------------------- 1 | DISABLED.local 2 | -------------------------------------------------------------------------------- /winbuild/.gitignore: -------------------------------------------------------------------------------- 1 | *.idb 2 | *.inc 3 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-firstSAN-sv.dhp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/.gitignore: -------------------------------------------------------------------------------- 1 | /unit1[36][0-9][0-9] 2 | -------------------------------------------------------------------------------- /projects/Windows/.gitattributes: -------------------------------------------------------------------------------- 1 | *.sln eol=crlf 2 | -------------------------------------------------------------------------------- /.dcignore: -------------------------------------------------------------------------------- 1 | tests/** 2 | docs/** 3 | docs/examples/** 4 | -------------------------------------------------------------------------------- /docs/libcurl/curl_strnequal.3: -------------------------------------------------------------------------------- 1 | .so man3/curl_strequal.3 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: curl 2 | open_collective: curl 3 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.pdf 3 | curl.1 4 | *.1.dist 5 | -------------------------------------------------------------------------------- /include/curl/.gitignore: -------------------------------------------------------------------------------- 1 | curlver.h.dist 2 | stamp-h2 3 | stamp-h3 4 | -------------------------------------------------------------------------------- /docs/libcurl/curl_multi_socket_all.3: -------------------------------------------------------------------------------- 1 | .so man3/curl_multi_socket.3 2 | -------------------------------------------------------------------------------- /tests/libtest/.checksrc: -------------------------------------------------------------------------------- 1 | disable TYPEDEFSTRUCT 2 | disable BANNEDFUNC 3 | -------------------------------------------------------------------------------- /docs/libcurl/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.pdf 3 | *.3.dist 4 | libcurl-symbols.3 5 | -------------------------------------------------------------------------------- /projects/Windows/VC10/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | -------------------------------------------------------------------------------- /projects/Windows/VC11/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | -------------------------------------------------------------------------------- /projects/Windows/VC12/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | -------------------------------------------------------------------------------- /docs/examples/.checksrc: -------------------------------------------------------------------------------- 1 | disable TYPEDEFSTRUCT 2 | disable SNPRINTF 3 | disable BANNEDFUNC 4 | -------------------------------------------------------------------------------- /tests/data/test1034: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/data/test1034 -------------------------------------------------------------------------------- /tests/data/test1160: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/data/test1160 -------------------------------------------------------------------------------- /tests/data/test2080: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/data/test2080 -------------------------------------------------------------------------------- /projects/Windows/VC14.10/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opendb 2 | /*.opensdf 3 | /*.sdf 4 | /*.vc.db 5 | /.vs 6 | -------------------------------------------------------------------------------- /projects/Windows/VC14.30/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opendb 2 | /*.opensdf 3 | /*.sdf 4 | /*.vc.db 5 | /.vs 6 | -------------------------------------------------------------------------------- /projects/Windows/VC14/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opendb 2 | /*.opensdf 3 | /*.sdf 4 | /*.vc.db 5 | /.vs 6 | -------------------------------------------------------------------------------- /.lift/config.toml: -------------------------------------------------------------------------------- 1 | ignoreRules = [ "DEAD_STORE" ] 2 | build = "make" 3 | setup = ".lift/setup.sh" 4 | -------------------------------------------------------------------------------- /projects/Windows/VC10/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC10/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC11/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC11/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC12/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC12/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.ncb 2 | /*.opensdf 3 | /*.sdf 4 | /*.suo 5 | /*.user 6 | /*.vcxproj 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /m4/.gitignore: -------------------------------------------------------------------------------- 1 | libtool.m4 2 | libtool.m4.tmp 3 | ltoptions.m4 4 | ltsugar.m4 5 | ltversion.m4 6 | lt~obsolete.m4 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14.10/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14.10/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14.30/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /projects/Windows/VC14.30/src/.gitignore: -------------------------------------------------------------------------------- 1 | /*.opensdf 2 | /*.sdf 3 | /*.user 4 | /*.vc.db 5 | /*.vcxproj 6 | /.vs 7 | -------------------------------------------------------------------------------- /tests/certs/EdelCurlRoot-ca.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/EdelCurlRoot-ca.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost-sv.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-sv.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost0h-sv.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost0h-sv.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost-sv.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-sv.pub.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost.nn-sv.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost.nn-sv.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost.nn-sv.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost.nn-sv.pub.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost0h-sv.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost0h-sv.pub.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost-firstSAN-sv.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-firstSAN-sv.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost-lastSAN-sv.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-lastSAN-sv.der -------------------------------------------------------------------------------- /tests/server/.gitignore: -------------------------------------------------------------------------------- 1 | fake_ntlm 2 | getpart 3 | resolve 4 | rtspd 5 | sockfilt 6 | sws 7 | tftpd 8 | socksd 9 | disabled 10 | mqttd -------------------------------------------------------------------------------- /tests/certs/Server-localhost-lastSAN-sv.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-lastSAN-sv.pub.der -------------------------------------------------------------------------------- /tests/certs/Server-localhost-firstSAN-sv.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/curl/master/tests/certs/Server-localhost-firstSAN-sv.pub.der -------------------------------------------------------------------------------- /projects/Windows/.gitignore: -------------------------------------------------------------------------------- 1 | VC*/src/*curl.vcproj.dist 2 | VC*/lib/*curl.vcproj.dist 3 | VC*/src/*curl.vcxproj.dist 4 | VC*/lib/*curl.vcxproj.dist 5 | 6 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | *.a 2 | *.nlm 3 | *.res 4 | config-win32.h 5 | curl 6 | curl_config.h 7 | curl_config.h.in 8 | stamp-h2 9 | tool_hugehelp.c 10 | tool_version.h.dist 11 | -------------------------------------------------------------------------------- /tests/libtest/.gitignore: -------------------------------------------------------------------------------- 1 | chkdecimalpoint 2 | chkhostname 3 | lib[123][0-9][0-9][0-9] 4 | lib[56][0-9][0-9] 5 | lib1521.c 6 | libauthretry 7 | libntlmconnect 8 | libprereq 9 | -------------------------------------------------------------------------------- /.lift/setup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | autoreconf -fi 3 | ./configure --with-openssl 4 | echo "Ran the setup script for Lift including autoconf and executing ./configure --with-openssl" 5 | -------------------------------------------------------------------------------- /lib/.gitignore: -------------------------------------------------------------------------------- 1 | *.a 2 | *.imp 3 | *.nlm 4 | *.orig 5 | *.rej 6 | *.res 7 | TAGS 8 | curl_config.h 9 | curl_config.h.in 10 | libcurl.plist.dist 11 | libcurl.plist 12 | libcurl.vers 13 | stamp-h1 14 | -------------------------------------------------------------------------------- /packages/vms/macro32_exactcase.patch: -------------------------------------------------------------------------------- 1 | macro32_exactcase.exe 2 | SE EC 3 | ^X00000001 4 | RE /I 5 | ^X00012B1D 6 | 'BICB2 #^X00000020,R3' 7 | EXIT 8 | 'BICB2 #^X00000000,R3' 9 | EXI 10 | U 11 | EXI 12 | -------------------------------------------------------------------------------- /lib/libcurl.vers.in: -------------------------------------------------------------------------------- 1 | HIDDEN 2 | { 3 | local: 4 | __*; 5 | _rest*; 6 | _save*; 7 | }; 8 | 9 | CURL_@CURL_LT_SHLIB_VERSIONED_FLAVOUR@4 10 | { 11 | global: curl_*; 12 | local: *; 13 | }; 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tcp-fastopen.d: -------------------------------------------------------------------------------- 1 | Long: tcp-fastopen 2 | Added: 7.49.0 3 | Help: Use TCP Fast Open 4 | Category: connection 5 | Example: --tcp-fastopen $URL 6 | See-also: false-start 7 | --- 8 | Enable use of TCP Fast Open (RFC7413). 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/manual.d: -------------------------------------------------------------------------------- 1 | Long: manual 2 | Short: M 3 | Help: Display the full manual 4 | Category: curl 5 | Example: --manual 6 | Added: 5.2 7 | See-also: verbose libcurl trace 8 | --- 9 | Manual. Display the huge help text. 10 | -------------------------------------------------------------------------------- /mlc_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "_comment": "Config file for linkcheck: If urls have some issues we can not fix on our end past it in here. MLC will ignore this.", 3 | "ignorePatterns": [ 4 | { 5 | "pattern": "" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /tests/fuzz/README: -------------------------------------------------------------------------------- 1 | Fuzz tests 2 | ========== 3 | 4 | The fuzzing tests for curl have been moved to a separate repository: 5 | 6 | https://github.com/curl/curl-fuzzer 7 | 8 | More information on how to get started with curl fuzz testing can be found there. 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-tlsv1.d: -------------------------------------------------------------------------------- 1 | Long: proxy-tlsv1 2 | Help: Use TLSv1 for HTTPS proxy 3 | Added: 7.52.0 4 | Category: proxy tls auth 5 | Example: --proxy-tlsv1 -x https://proxy $URL 6 | See-also: proxy 7 | --- 8 | Same as --tlsv1 but used in HTTPS proxy context. 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/sasl-ir.d: -------------------------------------------------------------------------------- 1 | Long: sasl-ir 2 | Help: Enable initial response in SASL authentication 3 | Added: 7.31.0 4 | Category: auth 5 | Example: --sasl-ir imap://example.com/ 6 | See-also: sasl-authzid 7 | --- 8 | Enable initial response in SASL authentication. 9 | -------------------------------------------------------------------------------- /tests/data/test1652: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | infof 6 | 7 | 8 | 9 | 10 | 11 | none 12 | 13 | 14 | unittest 15 | 16 | 17 | infof 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/cmdline-opts/doh-insecure.d: -------------------------------------------------------------------------------- 1 | Long: doh-insecure 2 | Help: Allow insecure DoH server connections 3 | Added: 7.76.0 4 | Category: dns tls 5 | Example: --doh-insecure --doh-url https://doh.example $URL 6 | See-also: doh-url 7 | --- 8 | Same as --insecure but used for DoH (DNS-over-HTTPS). 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-key.d: -------------------------------------------------------------------------------- 1 | Long: proxy-key 2 | Help: Private key for HTTPS proxy 3 | Arg: 4 | Category: proxy tls 5 | Example: --proxy-key here -x https://proxy $URL 6 | Added: 7.52.0 7 | See-also: proxy-key-type proxy 8 | --- 9 | Same as --key but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/data-ascii.d: -------------------------------------------------------------------------------- 1 | Long: data-ascii 2 | Arg: 3 | Help: HTTP POST ASCII data 4 | Protocols: HTTP 5 | Category: http post upload 6 | Example: --data-ascii @file $URL 7 | Added: 7.2 8 | See-also: data-binary data-raw data-urlencode 9 | --- 10 | This is just an alias for --data. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-insecure.d: -------------------------------------------------------------------------------- 1 | Long: proxy-insecure 2 | Help: Do HTTPS proxy connections without verifying the proxy 3 | Added: 7.52.0 4 | Category: proxy tls 5 | Example: --proxy-insecure -x https://proxy $URL 6 | See-also: proxy insecure 7 | --- 8 | Same as --insecure but used in HTTPS proxy context. 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/http1.1.d: -------------------------------------------------------------------------------- 1 | Long: http1.1 2 | Tags: Versions 3 | Protocols: HTTP 4 | Added: 7.33.0 5 | Mutexed: http1.0 http2 http2-prior-knowledge http3 6 | Help: Use HTTP 1.1 7 | Category: http 8 | Example: --http1.1 $URL 9 | See-also: http1.0 http0.9 10 | --- 11 | Tells curl to use HTTP version 1.1. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-cert.d: -------------------------------------------------------------------------------- 1 | Long: proxy-cert 2 | Arg: 3 | Help: Set client certificate for proxy 4 | Added: 7.52.0 5 | Category: proxy tls 6 | Example: --proxy-cert file -x https://proxy $URL 7 | See-also: proxy-cert-type 8 | --- 9 | Same as --cert but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-crlfile.d: -------------------------------------------------------------------------------- 1 | Long: proxy-crlfile 2 | Arg: 3 | Help: Set a CRL list for proxy 4 | Added: 7.52.0 5 | Category: proxy tls 6 | Example: --proxy-crlfile rejects.txt -x https://proxy $URL 7 | See-also: crlfile proxy 8 | --- 9 | Same as --crlfile but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /tests/data/test1653: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | urlapi 6 | 7 | 8 | 9 | 10 | 11 | none 12 | 13 | 14 | unittest 15 | 16 | 17 | urlapi port number parsing 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/cmdline-opts/crlf.d: -------------------------------------------------------------------------------- 1 | Long: crlf 2 | Help: Convert LF to CRLF in upload 3 | Protocols: FTP SMTP 4 | Category: ftp smtp 5 | Example: --crlf -T file ftp://example.com/ 6 | Added: 5.7 7 | See-also: use-ascii 8 | --- 9 | Convert LF to CRLF in upload. Useful for MVS (OS/390). 10 | 11 | (SMTP added in 7.40.0) 12 | -------------------------------------------------------------------------------- /tests/data/test1395: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | unittest 16 | 17 | 18 | Curl_dedotdotify 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-tlsuser.d: -------------------------------------------------------------------------------- 1 | Long: proxy-tlsuser 2 | Arg: 3 | Help: TLS username for HTTPS proxy 4 | Added: 7.52.0 5 | Category: proxy tls auth 6 | Example: --proxy-tlsuser smith -x https://proxy $URL 7 | See-also: proxy proxy-tlspassword 8 | --- 9 | Same as --tlsuser but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /tests/certs/EdelCurlRoot-ca.cnf: -------------------------------------------------------------------------------- 1 | [ ca ] 2 | default_ca = EdelCurlRoot 3 | 4 | [ EdelCurlRoot ] 5 | database = EdelCurlRoot-ca.db 6 | certificate = EdelCurlRoot-ca.crt 7 | private_key = EdelCurlRoot-ca.key 8 | crlnumber = EdelCurlRoot-ca.cnt 9 | default_md = sha1 10 | default_days = 365 11 | default_crl_days = 30 12 | -------------------------------------------------------------------------------- /tests/data/test1601: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | MD5 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | MD5 unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1611: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | MD4 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | MD4 unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1650: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | DOH 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | DoH 18 | 19 | 20 | DOH 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/data/test1651: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | x509 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | x509 parsing 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/cmdline-opts/doh-cert-status.d: -------------------------------------------------------------------------------- 1 | Long: doh-cert-status 2 | Help: Verify the status of the DoH server cert via OCSP-staple 3 | Added: 7.76.0 4 | Category: dns tls 5 | Example: --doh-cert-status --doh-url https://doh.example $URL 6 | See-also: doh-insecure 7 | --- 8 | Same as --cert-status but used for DoH (DNS-over-HTTPS). 9 | -------------------------------------------------------------------------------- /tests/data/test1300: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | llist 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | llist unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1612: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | HMAC 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | HMAC unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-ciphers.d: -------------------------------------------------------------------------------- 1 | Long: proxy-ciphers 2 | Arg: 3 | Help: SSL ciphers to use for proxy 4 | Added: 7.52.0 5 | Category: proxy tls 6 | Example: --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy $URL 7 | See-also: ciphers curves proxy 8 | --- 9 | Same as --ciphers but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-key-type.d: -------------------------------------------------------------------------------- 1 | Long: proxy-key-type 2 | Arg: 3 | Help: Private key file type for proxy 4 | Added: 7.52.0 5 | Category: proxy tls 6 | Example: --proxy-key-type DER --proxy-key here -x https://proxy $URL 7 | See-also: proxy-key proxy 8 | --- 9 | Same as --key-type but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /tests/data/test1606: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | speedcheck 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | verify speedcheck 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1610: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | SHA256 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | SHA256 unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1620: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | URL 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | unit tests for url.c 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1661: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | bufref 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | bufref unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-ssl-allow-beast.d: -------------------------------------------------------------------------------- 1 | Long: proxy-ssl-allow-beast 2 | Help: Allow security flaw for interop for HTTPS proxy 3 | Added: 7.52.0 4 | Category: proxy tls 5 | Example: --proxy-ssl-allow-beast -x https://proxy $URL 6 | See-also: ssl-allow-beast proxy 7 | --- 8 | Same as --ssl-allow-beast but used in HTTPS proxy context. 9 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-tlspassword.d: -------------------------------------------------------------------------------- 1 | Long: proxy-tlspassword 2 | Arg: 3 | Help: TLS password for HTTPS proxy 4 | Added: 7.52.0 5 | Category: proxy tls auth 6 | Example: --proxy-tlspassword passwd -x https://proxy $URL 7 | See-also: proxy proxy-tlsuser 8 | --- 9 | Same as --tlspassword but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /tests/data/test1600: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | NTLM 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | NTLM 18 | 19 | 20 | NTLM unit tests 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/data/test1604: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | unittest 16 | 17 | 18 | Test WIN32/MSDOS filename sanitization 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-capath.d: -------------------------------------------------------------------------------- 1 | Long: proxy-capath 2 | Help: CA directory to verify peer against for proxy 3 | Arg: 4 | Added: 7.52.0 5 | See-also: proxy-cacert proxy capath 6 | Category: proxy tls 7 | Example: --proxy-capath /local/directory -x https://proxy $URL 8 | --- 9 | Same as --capath but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-cert-type.d: -------------------------------------------------------------------------------- 1 | Long: proxy-cert-type 2 | Arg: 3 | Added: 7.52.0 4 | Help: Client certificate type for HTTPS proxy 5 | Category: proxy tls 6 | Example: --proxy-cert-type PEM --proxy-cert file -x https://proxy $URL 7 | See-also: proxy-cert 8 | --- 9 | Same as --cert-type but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-pass.d: -------------------------------------------------------------------------------- 1 | Long: proxy-pass 2 | Arg: 3 | Help: Pass phrase for the private key for HTTPS proxy 4 | Added: 7.52.0 5 | Category: proxy tls auth 6 | Example: --proxy-pass secret --proxy-key here -x https://proxy $URL 7 | See-also: proxy proxy-key 8 | --- 9 | Same as --pass but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-tlsauthtype.d: -------------------------------------------------------------------------------- 1 | Long: proxy-tlsauthtype 2 | Arg: 3 | Help: TLS authentication type for HTTPS proxy 4 | Added: 7.52.0 5 | Category: proxy tls auth 6 | Example: --proxy-tlsauthtype SRP -x https://proxy $URL 7 | See-also: proxy proxy-tlsuser 8 | --- 9 | Same as --tlsauthtype but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /tests/data/test1302: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | base64 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | base64 encode/decode unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1303: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | Curl_timeleft 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | Curl_timeleft unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1399: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | Curl_pgrsTime 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | Curl_pgrsTime unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1655: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | doh 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | DoH 18 | 19 | 20 | unit test for doh_encode 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /.github/lock.yml: -------------------------------------------------------------------------------- 1 | # Configuration for lock-threads - https://github.com/dessant/lock-threads 2 | 3 | # Number of days of inactivity before a closed issue or pull request is locked 4 | daysUntilLock: 90 5 | # Comment to post before locking. Set to `false` to disable 6 | lockComment: false 7 | # Limit to only `issues` or `pulls` 8 | # only: issues 9 | -------------------------------------------------------------------------------- /CHANGES: -------------------------------------------------------------------------------- 1 | See https://curl.se/changes.html for the edited and human readable online 2 | version of what has changed over the years in different curl releases. 3 | 4 | Generate a CHANGES file like the one present in every release like this: 5 | 6 | $ git log --pretty=fuller --no-color --date=short --decorate=full | \ 7 | ./scripts/log2changes.pl 8 | -------------------------------------------------------------------------------- /docs/cmdline-opts/mail-from.d: -------------------------------------------------------------------------------- 1 | Long: mail-from 2 | Arg:
3 | Help: Mail from this address 4 | Protocols: SMTP 5 | Added: 7.20.0 6 | See-also: mail-rcpt mail-auth 7 | Category: smtp 8 | Example: --mail-from user@example.com -T mail smtp://example.com/ 9 | --- 10 | Specify a single address that the given mail should get sent from. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-cacert.d: -------------------------------------------------------------------------------- 1 | Long: proxy-cacert 2 | Help: CA certificate to verify peer against for proxy 3 | Arg: 4 | Added: 7.52.0 5 | See-also: proxy-capath cacert capath proxy 6 | Category: proxy tls 7 | Example: --proxy-cacert CA-file.txt -x https://proxy $URL 8 | --- 9 | Same as --cacert but used in HTTPS proxy context. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-service-name.d: -------------------------------------------------------------------------------- 1 | Long: proxy-service-name 2 | Arg: 3 | Help: SPNEGO proxy service name 4 | Added: 7.43.0 5 | Category: proxy tls 6 | Example: --proxy-service-name "shrubbery" -x proxy $URL 7 | See-also: service-name proxy 8 | --- 9 | This option allows you to change the service name for proxy negotiation. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/raw.d: -------------------------------------------------------------------------------- 1 | Long: raw 2 | Help: Do HTTP "raw"; no transfer decoding 3 | Added: 7.16.2 4 | Protocols: HTTP 5 | Category: http 6 | Example: --raw $URL 7 | See-also: tr-encoding 8 | --- 9 | When used, it disables all internal HTTP decoding of content or transfer 10 | encodings and instead makes them passed on unaltered, raw. 11 | -------------------------------------------------------------------------------- /tests/data/test1607: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | CURLOPT_RESOLVE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | CURLOPT_RESOLVE parsing 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1609: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | CURLOPT_RESOLVE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | CURLOPT_RESOLVE parsing 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/cmdline-opts/compressed-ssh.d: -------------------------------------------------------------------------------- 1 | Long: compressed-ssh 2 | Help: Enable SSH compression 3 | Protocols: SCP SFTP 4 | Added: 7.56.0 5 | Category: scp ssh 6 | See-also: compressed 7 | Example: --compressed-ssh sftp://example.com/ 8 | --- 9 | Enables built-in SSH compression. 10 | This is a request, not an order; the server may or may not do it. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/netrc-optional.d: -------------------------------------------------------------------------------- 1 | Long: netrc-optional 2 | Help: Use either .netrc or URL 3 | Mutexed: netrc 4 | See-also: netrc-file 5 | Category: curl 6 | Example: --netrc-optional $URL 7 | Added: 7.9.8 8 | --- 9 | Similar to --netrc, but this option makes the .netrc usage **optional** 10 | and not mandatory as the --netrc option does. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/unix-socket.d: -------------------------------------------------------------------------------- 1 | Long: unix-socket 2 | Arg: 3 | Help: Connect through this Unix domain socket 4 | Added: 7.40.0 5 | Protocols: HTTP 6 | Category: connection 7 | See-also: abstract-unix-socket 8 | Example: --unix-socket socket-path $URL 9 | --- 10 | Connect through this Unix domain socket, instead of using the network. 11 | -------------------------------------------------------------------------------- /tests/data/test1398: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curl_msnprintf 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | curl_msnprintf unit tests 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/cmdline-opts/metalink.d: -------------------------------------------------------------------------------- 1 | Long: metalink 2 | Help: Process given URLs as metalink XML file 3 | Added: 7.27.0 4 | Category: misc 5 | Example: --metalink file $URL 6 | See-also: parallel 7 | --- 8 | This option was previously used to specify a metalink resource. Metalink 9 | support has been disabled in curl since 7.78.0 for security reasons. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/pass.d: -------------------------------------------------------------------------------- 1 | Long: pass 2 | Arg: 3 | Help: Pass phrase for the private key 4 | Protocols: SSH TLS 5 | Category: ssh tls auth 6 | Example: --pass secret --key file $URL 7 | Added: 7.9.3 8 | See-also: key user 9 | --- 10 | Passphrase for the private key. 11 | 12 | If this option is used several times, the last one will be used. 13 | -------------------------------------------------------------------------------- /tests/data/test1301: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curl_strcasecompare 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | curl_strcasecompare unit tests 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1603: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | hash 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | Internal hash add, retrieval, deletion testing 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/data/test1605: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | unittest 16 | 17 | 18 | Test negative data lengths as input to libcurl functions 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/data/test1608: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curlopt_dns_shuffle_addresses 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | verify DNS shuffling 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /docs/cmdline-opts/disable.d: -------------------------------------------------------------------------------- 1 | Long: disable 2 | Short: q 3 | Help: Disable .curlrc 4 | Category: curl 5 | Example: -q $URL 6 | Added: 5.0 7 | See-also: config 8 | --- 9 | If used as the first parameter on the command line, the *curlrc* config 10 | file will not be read and used. See the --config for details on the default 11 | config file search path. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-ssl-auto-client-cert.d: -------------------------------------------------------------------------------- 1 | Long: proxy-ssl-auto-client-cert 2 | Help: Use auto client certificate for proxy (Schannel) 3 | Added: 7.77.0 4 | Category: proxy tls 5 | Example: --proxy-ssl-auto-client-cert -x https://proxy $URL 6 | See-also: ssl-auto-client-cert proxy 7 | --- 8 | Same as --ssl-auto-client-cert but used in HTTPS proxy context. 9 | -------------------------------------------------------------------------------- /docs/INSTALL: -------------------------------------------------------------------------------- 1 | _ _ ____ _ 2 | ___| | | | _ \| | 3 | / __| | | | |_) | | 4 | | (__| |_| | _ <| |___ 5 | \___|\___/|_| \_\_____| 6 | 7 | How To Compile 8 | 9 | see INSTALL.md 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ipv4.d: -------------------------------------------------------------------------------- 1 | Short: 4 2 | Long: ipv4 3 | Tags: Versions 4 | Protocols: 5 | Added: 7.10.8 6 | Mutexed: ipv6 7 | Requires: 8 | See-also: http1.1 http2 9 | Help: Resolve names to IPv4 addresses 10 | Category: connection dns 11 | Example: --ipv4 $URL 12 | --- 13 | This option tells curl to use IPv4 addresses only, and not for example try 14 | IPv6. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ipv6.d: -------------------------------------------------------------------------------- 1 | Short: 6 2 | Long: ipv6 3 | Tags: Versions 4 | Protocols: 5 | Added: 7.10.8 6 | Mutexed: ipv4 7 | Requires: 8 | See-also: http1.1 http2 9 | Help: Resolve names to IPv6 addresses 10 | Category: connection dns 11 | Example: --ipv6 $URL 12 | --- 13 | This option tells curl to use IPv6 addresses only, and not for example try 14 | IPv4. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tr-encoding.d: -------------------------------------------------------------------------------- 1 | Long: tr-encoding 2 | Added: 7.21.6 3 | Help: Request compressed transfer encoding 4 | Protocols: HTTP 5 | Category: http 6 | Example: --tr-encoding $URL 7 | See-also: compressed 8 | --- 9 | Request a compressed Transfer-Encoding response using one of the algorithms 10 | curl supports, and uncompress the data while receiving it. 11 | -------------------------------------------------------------------------------- /tests/data/test1621: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | stripcredentials 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | https 18 | 19 | 20 | unit tests for stripcredentials from URL 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/cmdline-opts/egd-file.d: -------------------------------------------------------------------------------- 1 | Long: egd-file 2 | Arg: 3 | Help: EGD socket path for random data 4 | Protocols: TLS 5 | See-also: random-file 6 | Category: tls 7 | Example: --egd-file /random/here $URL 8 | Added: 7.7 9 | --- 10 | Specify the path name to the Entropy Gathering Daemon socket. The socket is 11 | used to seed the random engine for SSL connections. 12 | -------------------------------------------------------------------------------- /tests/data/test1602: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | hash 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | Internal hash create/add/destroy testing, exercising clean functions 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.dsw -crlf 2 | buildconf eol=lf 3 | configure.ac eol=lf 4 | *.m4 eol=lf 5 | *.in eol=lf 6 | *.am eol=lf 7 | *.sh eol=lf 8 | *.[ch] whitespace=tab-in-indent 9 | 10 | # Batch files (bat,btm,cmd) must be run with CRLF line endings. 11 | # Refer to https://github.com/curl/curl/pull/6442 12 | *.bat text eol=crlf 13 | *.btm text eol=crlf 14 | *.cmd text eol=crlf 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/data-raw.d: -------------------------------------------------------------------------------- 1 | Long: data-raw 2 | Arg: 3 | Protocols: HTTP 4 | Help: HTTP POST data, '@' allowed 5 | Added: 7.43.0 6 | See-also: data 7 | Category: http post upload 8 | Example: --data-raw "hello" $URL 9 | Example: --data-raw "@at@at@" $URL 10 | --- 11 | This posts data similarly to --data but without the special 12 | interpretation of the @ character. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/http1.0.d: -------------------------------------------------------------------------------- 1 | Short: 0 2 | Long: http1.0 3 | Tags: Versions 4 | Protocols: HTTP 5 | Added: 7.9.1 6 | Mutexed: http1.1 http2 http2-prior-knowledge http3 7 | Help: Use HTTP 1.0 8 | Category: http 9 | Example: --http1.0 $URL 10 | See-also: http0.9 http1.1 11 | --- 12 | Tells curl to use HTTP version 1.0 instead of using its internally preferred 13 | HTTP version. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/service-name.d: -------------------------------------------------------------------------------- 1 | Long: service-name 2 | Help: SPNEGO service name 3 | Arg: 4 | Added: 7.43.0 5 | Category: misc 6 | Example: --service-name sockd/server $URL 7 | See-also: negotiate proxy-service-name 8 | --- 9 | This option allows you to change the service name for SPNEGO. 10 | 11 | Examples: --negotiate --service-name sockd would use sockd/server-name. 12 | -------------------------------------------------------------------------------- /tests/data/test1396: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curl_easy_escape 6 | curl_easy_unescape 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | 19 | 20 | curl_easy_escape and curl_easy_unescape 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/data/test1397: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | ssl 6 | wildcard 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | 19 | 20 | Check wildcard certificate matching function Curl_cert_hostcheck 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/data/test1307: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | unittest 6 | wildcardmatch 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | ftp 19 | 20 | 21 | internal Curl_fnmatch() testing 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /docs/cmdline-opts/retry-connrefused.d: -------------------------------------------------------------------------------- 1 | Long: retry-connrefused 2 | Help: Retry on connection refused (use with --retry) 3 | Added: 7.52.0 4 | Category: curl 5 | Example: --retry-connrefused --retry $URL 6 | See-also: retry retry-all-errors 7 | --- 8 | In addition to the other conditions, consider ECONNREFUSED as a transient 9 | error too for --retry. This option is used together with --retry. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/show-error.d: -------------------------------------------------------------------------------- 1 | Long: show-error 2 | Short: S 3 | Help: Show error even when -s is used 4 | See-also: no-progress-meter 5 | Category: curl 6 | Example: --show-error --silent $URL 7 | Added: 5.9 8 | --- 9 | When used with --silent, it makes curl show an error message if it fails. 10 | 11 | This option is global and does not need to be specified for each use of 12 | --next. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ssl-no-revoke.d: -------------------------------------------------------------------------------- 1 | Long: ssl-no-revoke 2 | Help: Disable cert revocation checks (Schannel) 3 | Added: 7.44.0 4 | Category: tls 5 | Example: --ssl-no-revoke $URL 6 | See-also: crlfile 7 | --- 8 | (Schannel) This option tells curl to disable certificate revocation checks. 9 | WARNING: this option loosens the SSL security, and by using this flag you ask 10 | for exactly that. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsuser.d: -------------------------------------------------------------------------------- 1 | Long: tlsuser 2 | Arg: 3 | Help: TLS user name 4 | Added: 7.21.4 5 | Category: tls auth 6 | Example: --tlspassword pwd --tlsuser user $URL 7 | See-also: tlspassword 8 | --- 9 | Set username for use with the TLS authentication method specified with 10 | --tlsauthtype. Requires that --tlspassword also is set. 11 | 12 | This option does not work with TLS 1.3. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ntlm-wb.d: -------------------------------------------------------------------------------- 1 | Long: ntlm-wb 2 | Help: Use HTTP NTLM authentication with winbind 3 | Protocols: HTTP 4 | See-also: ntlm proxy-ntlm 5 | Category: auth http 6 | Example: --ntlm-wb -u user:password $URL 7 | Added: 7.22.0 8 | --- 9 | Enables NTLM much in the style --ntlm does, but hand over the authentication 10 | to the separate binary ntlmauth application that is executed when needed. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlspassword.d: -------------------------------------------------------------------------------- 1 | Long: tlspassword 2 | Arg: 3 | Help: TLS password 4 | Added: 7.21.4 5 | Category: tls auth 6 | Example: --tlspassword pwd --tlsuser user $URL 7 | See-also: tlsuser 8 | --- 9 | Set password for use with the TLS authentication method specified with 10 | --tlsauthtype. Requires that --tlsuser also be set. 11 | 12 | This option does not work with TLS 1.3. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/trace-time.d: -------------------------------------------------------------------------------- 1 | Long: trace-time 2 | Help: Add time stamps to trace/verbose output 3 | Added: 7.14.0 4 | Category: verbose 5 | Example: --trace-time --trace-ascii output $URL 6 | See-also: trace verbose 7 | --- 8 | Prepends a time stamp to each trace or verbose line that curl displays. 9 | 10 | This option is global and does not need to be specified for each use of 11 | --next. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/disallow-username-in-url.d: -------------------------------------------------------------------------------- 1 | Long: disallow-username-in-url 2 | Help: Disallow username in URL 3 | Protocols: HTTP 4 | Added: 7.61.0 5 | See-also: proto 6 | Category: curl http 7 | Example: --disallow-username-in-url $URL 8 | --- 9 | This tells curl to exit if passed a URL containing a username. This is probably 10 | most useful when the URL is being provided at runtime or similar. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-ntlm.d: -------------------------------------------------------------------------------- 1 | Long: proxy-ntlm 2 | Help: Use NTLM authentication on the proxy 3 | See-also: proxy-negotiate proxy-anyauth 4 | Category: proxy auth 5 | Example: --proxy-ntlm --proxy-user user:passwd -x http://proxy $URL 6 | Added: 7.10.7 7 | --- 8 | Tells curl to use HTTP NTLM authentication when communicating with the given 9 | proxy. Use --ntlm for enabling NTLM with a remote host. 10 | -------------------------------------------------------------------------------- /tests/data/test1167: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | 16 | Verify curl prefix of public symbols in header files 17 | 18 | 19 | 20 | %SRCDIR/badsymbols.pl %SRCDIR/.. 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/data/test1394: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | unittest 16 | 17 | 18 | unit test for parse_cert_parameter() 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/cmdline-opts/form-escape.d: -------------------------------------------------------------------------------- 1 | Long: form-escape 2 | Help: Escape multipart form field/file names using backslash 3 | Protocols: HTTP 4 | See-also: form 5 | Added: 7.81.0 6 | Category: http post 7 | Example: --form-escape --form 'field\\name=curl' 'file=@load"this' $URL 8 | --- 9 | Tells curl to pass on names of multipart form fields and files using 10 | backslash-escaping instead of percent-encoding. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/random-file.d: -------------------------------------------------------------------------------- 1 | Long: random-file 2 | Arg: 3 | Help: File for reading random data from 4 | Category: misc 5 | Example: --random-file rubbish $URL 6 | Added: 7.7 7 | See-also: egd-file 8 | --- 9 | Specify the path name to file containing what will be considered as random 10 | data. The data may be used to seed the random engine for SSL connections. See 11 | also the --egd-file option. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/remote-time.d: -------------------------------------------------------------------------------- 1 | Long: remote-time 2 | Short: R 3 | Help: Set the remote file's time on the local output 4 | Category: output 5 | Example: --remote-time -o foo $URL 6 | Added: 7.9 7 | See-also: remote-name time-cond 8 | --- 9 | When used, this will make curl attempt to figure out the timestamp of the 10 | remote file, and if that is available make the local file get that same 11 | timestamp. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsv1.d: -------------------------------------------------------------------------------- 1 | Short: 1 2 | Long: tlsv1 3 | Tags: Versions 4 | Protocols: SSL 5 | Added: 7.9.2 6 | Mutexed: tlsv1.1 tlsv1.2 tlsv1.3 7 | Requires: TLS 8 | See-also: http1.1 http2 9 | Help: Use TLSv1.0 or greater 10 | Category: tls 11 | Example: --tlsv1 $URL 12 | --- 13 | Tells curl to use at least TLS version 1.x when negotiating with a remote TLS 14 | server. That means TLS version 1.0 or higher 15 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | See [docs/SECURITY-PROCESS.md](docs/SECURITY-PROCESS.md) for full details. 4 | 5 | ## Reporting a Vulnerability 6 | 7 | If you have found or just suspect a security problem somewhere in curl or libcurl, 8 | report it on [https://hackerone.com/curl](https://hackerone.com/curl). 9 | 10 | We treat security issues with confidentiality until controlled and disclosed responsibly. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-pret.d: -------------------------------------------------------------------------------- 1 | Long: ftp-pret 2 | Help: Send PRET before PASV 3 | Protocols: FTP 4 | Added: 7.20.0 5 | Category: ftp 6 | Example: --ftp-pret ftp://example.com/ 7 | See-also: ftp-port ftp-pasv 8 | --- 9 | Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers, 10 | mainly drftpd, require this non-standard command for directory listings as 11 | well as up and downloads in PASV mode. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-digest.d: -------------------------------------------------------------------------------- 1 | Long: proxy-digest 2 | Help: Use Digest authentication on the proxy 3 | See-also: proxy proxy-anyauth proxy-basic 4 | Category: proxy tls 5 | Example: --proxy-digest --proxy-user user:passwd -x proxy $URL 6 | Added: 7.12.0 7 | --- 8 | Tells curl to use HTTP Digest authentication when communicating with the given 9 | proxy. Use --digest for enabling HTTP Digest with a remote host. 10 | -------------------------------------------------------------------------------- /docs/cmdline-opts/parallel.d: -------------------------------------------------------------------------------- 1 | Short: Z 2 | Long: parallel 3 | Help: Perform transfers in parallel 4 | Added: 7.66.0 5 | Category: connection curl 6 | Example: --parallel $URL -o file1 $URL -o file2 7 | See-also: next verbose 8 | --- 9 | Makes curl perform its transfers in parallel as compared to the regular serial 10 | manner. 11 | 12 | This option is global and does not need to be specified for each use of 13 | --next. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ssl-revoke-best-effort.d: -------------------------------------------------------------------------------- 1 | Long: ssl-revoke-best-effort 2 | Help: Ignore missing/offline cert CRL dist points 3 | Added: 7.70.0 4 | Category: tls 5 | Example: --ssl-revoke-best-effort $URL 6 | See-also: crlfile insecure 7 | --- 8 | (Schannel) This option tells curl to ignore certificate revocation checks when 9 | they failed due to missing/offline distribution points for the revocation check 10 | lists. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/use-ascii.d: -------------------------------------------------------------------------------- 1 | Short: B 2 | Long: use-ascii 3 | Help: Use ASCII/text transfer 4 | Protocols: FTP LDAP 5 | Category: misc 6 | Example: -B ftp://example.com/README 7 | Added: 5.0 8 | See-also: crlf data-ascii 9 | --- 10 | Enable ASCII transfer. For FTP, this can also be enforced by using a URL that 11 | ends with ";type=A". This option causes data sent to stdout to be in text mode 12 | for win32 systems. 13 | -------------------------------------------------------------------------------- /tests/data/test1165: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | CURL_DISABLE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify configure.ac and source code CURL_DISABLE_-sync 18 | 19 | 20 | 21 | %SRCDIR/disable-scan.pl %SRCDIR/.. 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/data/test1305: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | unittest 6 | hash 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | 19 | 20 | internal hash create/destroy testing 21 | 22 | 23 | %TESTNUMBER 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-anyauth.d: -------------------------------------------------------------------------------- 1 | Long: proxy-anyauth 2 | Help: Pick any proxy authentication method 3 | Added: 7.13.2 4 | See-also: proxy proxy-basic proxy-digest 5 | Category: proxy auth 6 | Example: --proxy-anyauth --proxy-user user:passwd -x proxy $URL 7 | --- 8 | Tells curl to pick a suitable authentication method when communicating with 9 | the given HTTP proxy. This might cause an extra request/response round-trip. 10 | -------------------------------------------------------------------------------- /tests/certs/srp-verifier-db: -------------------------------------------------------------------------------- 1 | jsmith:34fPk7u.w3R/M1k2sQ9F.04GZqLKAsqDn44CHGu7ML0M8VWwu1p79OLxi6jRhSNdSM46Kx9GRVyJLXz7eok53..A6X5p3NdnMSYX8WwYrDmuseHDr.eua7gjd04S4EoY4ZuKix2.WGAsMTwk86AmTvcqyzqsH7GDhGOHEhjP5zs:lTjBBoK04K9vTKiL10rI/:1 2 | alice:3IIP1g1HDTN6VEUr8DUkMleocoC1cpuFZnmunDaGhMyIsw8LAwCc7ZapWaC66gZSyis4ezSuCqvhsJdwdc.0es2UrH6PBkBQflcQDuC.dEpjhWgAcH2Dw.2qU.E0ApQzLkcKOjXMQ2R6jMBL14kEUPjjHS3aa16yB.Afj3bNPdf:1JxU4GkweUEii6.b0grkzU:1 3 | -------------------------------------------------------------------------------- /docs/cmdline-opts/path-as-is.d: -------------------------------------------------------------------------------- 1 | Long: path-as-is 2 | Help: Do not squash .. sequences in URL path 3 | Added: 7.42.0 4 | Category: curl 5 | Example: --path-as-is https://example.com/../../etc/passwd 6 | See-also: request-target 7 | --- 8 | Tell curl to not handle sequences of /../ or /./ in the given URL 9 | path. Normally curl will squash or merge them according to standards but with 10 | this option set you tell it not to do that. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tcp-nodelay.d: -------------------------------------------------------------------------------- 1 | Long: tcp-nodelay 2 | Help: Use the TCP_NODELAY option 3 | Added: 7.11.2 4 | Category: connection 5 | Example: --tcp-nodelay $URL 6 | See-also: no-buffer 7 | --- 8 | Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for 9 | details about this option. 10 | 11 | Since 7.50.2, curl sets this option by default and you need to explicitly 12 | switch it off if you do not want it on. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/crlfile.d: -------------------------------------------------------------------------------- 1 | Long: crlfile 2 | Arg: 3 | Protocols: TLS 4 | Help: Use this CRL list 5 | Added: 7.19.7 6 | Category: tls 7 | Example: --crlfile rejects.txt $URL 8 | See-also: cacert capath 9 | --- 10 | Provide a file using PEM format with a Certificate Revocation List that may 11 | specify peer certificates that are to be considered revoked. 12 | 13 | If this option is used several times, the last one will be used. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/engine.d: -------------------------------------------------------------------------------- 1 | Long: engine 2 | Arg: 3 | Help: Crypto engine to use 4 | Protocols: TLS 5 | Category: tls 6 | Example: --engine flavor $URL 7 | Added: 7.9.3 8 | See-also: ciphers curves 9 | --- 10 | Select the OpenSSL crypto engine to use for cipher operations. Use --engine 11 | list to print a list of build-time supported engines. Note that not all (and 12 | possibly none) of the engines may be available at runtime. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/sslv2.d: -------------------------------------------------------------------------------- 1 | Short: 2 2 | Long: sslv2 3 | Tags: Versions 4 | Protocols: SSL 5 | Added: 5.9 6 | Mutexed: sslv3 tlsv1 tlsv1.1 tlsv1.2 7 | Requires: TLS 8 | See-also: http1.1 http2 9 | Help: Use SSLv2 10 | Category: tls 11 | Example: --sslv2 $URL 12 | --- 13 | This option previously asked curl to use SSLv2, but starting in curl 7.77.0 14 | this instruction is ignored. SSLv2 is widely considered insecure (see RFC 15 | 6176). 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/sslv3.d: -------------------------------------------------------------------------------- 1 | Short: 3 2 | Long: sslv3 3 | Tags: Versions 4 | Protocols: SSL 5 | Added: 5.9 6 | Mutexed: sslv2 tlsv1 tlsv1.1 tlsv1.2 7 | Requires: TLS 8 | See-also: http1.1 http2 9 | Help: Use SSLv3 10 | Category: tls 11 | Example: --sslv3 $URL 12 | --- 13 | This option previously asked curl to use SSLv3, but starting in curl 7.77.0 14 | this instruction is ignored. SSLv3 is widely considered insecure (see RFC 15 | 7568). 16 | -------------------------------------------------------------------------------- /tests/data/test1132: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | memory-includes 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify memory #include files in libcurl's C source files 18 | 19 | 20 | 21 | %SRCDIR/mem-include-scan.pl %SRCDIR/../lib 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/data/test1175: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | symbols-in-versions 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify that symbols-in-versions and libcurl-errors.3 are in sync 18 | 19 | 20 | 21 | %SRCDIR/error-codes.pl %SRCDIR 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-keepalive.d: -------------------------------------------------------------------------------- 1 | Long: no-keepalive 2 | Help: Disable TCP keepalive on the connection 3 | Category: connection 4 | Example: --no-keepalive $URL 5 | Added: 7.18.0 6 | See-also: keepalive-time 7 | --- 8 | Disables the use of keepalive messages on the TCP connection. curl otherwise 9 | enables them by default. 10 | 11 | Note that this is the negated option name documented. You can thus use 12 | --keepalive to enforce keepalive. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/styled-output.d: -------------------------------------------------------------------------------- 1 | Long: styled-output 2 | Help: Enable styled output for HTTP headers 3 | Added: 7.61.0 4 | Category: verbose 5 | Example: --styled-output -I $URL 6 | See-also: head verbose 7 | --- 8 | Enables the automatic use of bold font styles when writing HTTP headers to the 9 | terminal. Use --no-styled-output to switch them off. 10 | 11 | This option is global and does not need to be specified for each use of 12 | --next. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/head.d: -------------------------------------------------------------------------------- 1 | Long: head 2 | Short: I 3 | Help: Show document info only 4 | Protocols: HTTP FTP FILE 5 | Category: http ftp file 6 | Example: -I $URL 7 | Added: 4.0 8 | See-also: get verbose trace-ascii 9 | --- 10 | Fetch the headers only! HTTP-servers feature the command HEAD which this uses 11 | to get nothing but the header of a document. When used on an FTP or FILE file, 12 | curl displays the file size and last modification time only. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/etag-save.d: -------------------------------------------------------------------------------- 1 | Long: etag-save 2 | Arg: 3 | Help: Parse ETag from a request and save it to a file 4 | Protocols: HTTP 5 | Added: 7.68.0 6 | Category: http 7 | Example: --etag-save storetag.txt $URL 8 | See-also: etag-compare 9 | --- 10 | This option saves an HTTP ETag to the specified file. An ETag is a 11 | caching related header, usually returned in a response. 12 | 13 | If no ETag is sent by the server, an empty file is created. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/mail-auth.d: -------------------------------------------------------------------------------- 1 | Long: mail-auth 2 | Arg:
3 | Protocols: SMTP 4 | Help: Originator address of the original email 5 | Added: 7.25.0 6 | See-also: mail-rcpt mail-from 7 | Category: smtp 8 | Example: --mail-auth user@example.come -T mail smtp://example.com/ 9 | --- 10 | Specify a single address. This will be used to specify the authentication 11 | address (identity) of a submitted message that is being relayed to another 12 | server. 13 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | *pid 2 | *.1.dist 3 | configurehelp.pm 4 | curl_client_key 5 | curl_client_key.pub 6 | curl_client_knownhosts 7 | curl_host_rsa_key 8 | curl_host_rsa_key.pub 9 | curl_host_rsa_key.pub_md5 10 | curl_host_rsa_key.pub_sha256 11 | curl_sftp_cmds 12 | curl_sftp_config 13 | curl_ssh_config 14 | curl_sshd_config 15 | ftps_stunnel.conf 16 | https_stunnel.conf 17 | log 18 | runtests.html 19 | runtests.pdf 20 | testcurl.html 21 | testcurl.pdf 22 | *.port -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-account.d: -------------------------------------------------------------------------------- 1 | Long: ftp-account 2 | Arg: 3 | Help: Account data string 4 | Protocols: FTP 5 | Added: 7.13.0 6 | Category: ftp auth 7 | Example: --ftp-account "mr.robot" ftp://example.com/ 8 | See-also: user 9 | --- 10 | When an FTP server asks for "account data" after user name and password has 11 | been provided, this data is sent off using the ACCT command. 12 | 13 | If this option is used several times, the last one will be used. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-ssl-control.d: -------------------------------------------------------------------------------- 1 | Long: ftp-ssl-control 2 | Help: Require SSL/TLS for FTP login, clear for transfer 3 | Protocols: FTP 4 | Added: 7.16.0 5 | Category: ftp tls 6 | Example: --ftp-ssl-control ftp://example.com 7 | See-also: ssl 8 | --- 9 | Require SSL/TLS for the FTP login, clear for transfer. Allows secure 10 | authentication, but non-encrypted data transfers for efficiency. Fails the 11 | transfer if the server does not support SSL/TLS. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/include.d: -------------------------------------------------------------------------------- 1 | Long: include 2 | Short: i 3 | Help: Include protocol response headers in the output 4 | See-also: verbose 5 | Category: important verbose 6 | Example: -i $URL 7 | Added: 4.8 8 | --- 9 | Include the HTTP response headers in the output. The HTTP response headers can 10 | include things like server name, cookies, date of the document, HTTP version 11 | and more... 12 | 13 | To view the request headers, consider the --verbose option. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/key-type.d: -------------------------------------------------------------------------------- 1 | Long: key-type 2 | Arg: 3 | Help: Private key file type (DER/PEM/ENG) 4 | Protocols: TLS 5 | Category: tls 6 | Example: --key-type DER --key here $URL 7 | Added: 7.9.3 8 | See-also: key 9 | --- 10 | Private key file type. Specify which type your --key provided private key 11 | is. DER, PEM, and ENG are supported. If not specified, PEM is assumed. 12 | 13 | If this option is used several times, the last one will be used. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/telnet-option.d: -------------------------------------------------------------------------------- 1 | Long: telnet-option 2 | Short: t 3 | Arg: 4 | Help: Set telnet option 5 | Category: telnet 6 | Example: -t TTYPE=vt100 telnet://example.com/ 7 | Added: 7.7 8 | See-also: config 9 | --- 10 | Pass options to the telnet protocol. Supported options are: 11 | 12 | TTYPE= Sets the terminal type. 13 | 14 | XDISPLOC= Sets the X display location. 15 | 16 | NEW_ENV= Sets an environment variable. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-negotiate.d: -------------------------------------------------------------------------------- 1 | Long: proxy-negotiate 2 | Help: Use HTTP Negotiate (SPNEGO) authentication on the proxy 3 | Added: 7.17.1 4 | See-also: proxy-anyauth proxy-basic 5 | Category: proxy auth 6 | Example: --proxy-negotiate --proxy-user user:passwd -x proxy $URL 7 | --- 8 | Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating 9 | with the given proxy. Use --negotiate for enabling HTTP Negotiate (SPNEGO) 10 | with a remote host. 11 | -------------------------------------------------------------------------------- /tests/data/test1308: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curl_formadd 6 | curl_formget 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | http 19 | 20 | 21 | formpost unit tests 22 | 23 | 24 | Piece of the file that is to uploaded as a formpost 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/cmdline-opts/socks5-basic.d: -------------------------------------------------------------------------------- 1 | Long: socks5-basic 2 | Help: Enable username/password auth for SOCKS5 proxies 3 | Added: 7.55.0 4 | Category: proxy auth 5 | Example: --socks5-basic --socks5 hostname:4096 $URL 6 | See-also: socks5 7 | --- 8 | Tells curl to use username/password authentication when connecting to a SOCKS5 9 | proxy. The username/password authentication is enabled by default. Use 10 | --socks5-gssapi to force GSS-API authentication to SOCKS5 proxies. 11 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsv1.3.d: -------------------------------------------------------------------------------- 1 | Long: tlsv1.3 2 | Help: Use TLSv1.3 or greater 3 | Protocols: TLS 4 | Added: 7.52.0 5 | Category: tls 6 | Example: --tlsv1.3 $URL 7 | See-also: tlsv1.2 8 | --- 9 | Forces curl to use TLS version 1.3 or later when connecting to a remote TLS 10 | server. 11 | 12 | If the connection is done without TLS, this option has no effect. This 13 | includes QUIC-using (HTTP/3) transfers. 14 | 15 | Note that TLS 1.3 is not supported by all TLS backends. 16 | -------------------------------------------------------------------------------- /tests/data/test1306: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | unittest 6 | hash 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | unittest 18 | 19 | 20 | internal hash create/add/destroy testing 21 | 22 | 23 | unit1305 24 | 25 | 26 | %TESTNUMBER 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tests/data/test1323: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | curlx_tvdiff 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 14 | # 15 | # Client-side 16 | 17 | 18 | none 19 | 20 | 21 | unittest 22 | 23 | 24 | curlx_tvdiff 25 | 26 | 27 | 28 | # 29 | # Verify data after the test has been "shot" 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tftp-no-options.d: -------------------------------------------------------------------------------- 1 | Long: tftp-no-options 2 | Help: Do not send any TFTP options 3 | Protocols: TFTP 4 | Added: 7.48.0 5 | Category: tftp 6 | Example: --tftp-no-options tftp://192.168.0.1/ 7 | See-also: tftp-blksize 8 | --- 9 | Tells curl not to send TFTP options requests. 10 | 11 | This option improves interop with some legacy servers that do not acknowledge 12 | or properly implement TFTP options. When this option is used --tftp-blksize is 13 | ignored. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy-basic.d: -------------------------------------------------------------------------------- 1 | Long: proxy-basic 2 | Help: Use Basic authentication on the proxy 3 | See-also: proxy proxy-anyauth proxy-digest 4 | Category: proxy auth 5 | Example: --proxy-basic --proxy-user user:passwd -x proxy $URL 6 | Added: 7.12.0 7 | --- 8 | Tells curl to use HTTP Basic authentication when communicating with the given 9 | proxy. Use --basic for enabling HTTP Basic with a remote host. Basic is the 10 | default authentication method curl uses with proxies. 11 | -------------------------------------------------------------------------------- /tests/data/test829: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IMAP 5 | CRLF-in-URL 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | imap 13 | 14 | 15 | IMAP with URL-encoded CR LF in the URL 16 | 17 | 18 | imap://%HOSTIP:%IMAPPORT/%0d%0a/%TESTNUMBER 19 | 20 | 21 | 22 | # 23 | 24 | # 3 - CURLE_URL_MALFORMAT 25 | 26 | 3 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/data/test875: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | CRLF-in-URL 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | pop3 13 | 14 | 15 | POP3 with URL-encoded CR LF in the URL 16 | 17 | 18 | pop3://%HOSTIP:%POP3PORT/%0d%0a/%TESTNUMBER 19 | 20 | 21 | 22 | # 23 | 24 | # 3 - CURLE_URL_MALFORMAT 25 | 26 | 3 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/data/test931: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | CRLF-in-URL 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | smtp 13 | 14 | 15 | SMTP with URL-encoded CR LF in the URL 16 | 17 | 18 | smtp://%HOSTIP:%SMTPPORT/%0d%0a/%TESTNUMBER 19 | 20 | 21 | 22 | # 23 | 24 | # 3 - CURLE_URL_MALFORMAT 25 | 26 | 3 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsv1.0.d: -------------------------------------------------------------------------------- 1 | Long: tlsv1.0 2 | Help: Use TLSv1.0 or greater 3 | Protocols: TLS 4 | Added: 7.34.0 5 | Category: tls 6 | Example: --tlsv1.0 $URL 7 | See-also: tlsv1.3 8 | --- 9 | Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server. 10 | 11 | In old versions of curl this option was documented to allow _only_ TLS 1.0. 12 | That behavior was inconsistent depending on the TLS library. Use --tls-max if 13 | you want to set a maximum TLS version. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsv1.1.d: -------------------------------------------------------------------------------- 1 | Long: tlsv1.1 2 | Help: Use TLSv1.1 or greater 3 | Protocols: TLS 4 | Added: 7.34.0 5 | Category: tls 6 | Example: --tlsv1.1 $URL 7 | See-also: tlsv1.3 8 | --- 9 | Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server. 10 | 11 | In old versions of curl this option was documented to allow _only_ TLS 1.1. 12 | That behavior was inconsistent depending on the TLS library. Use --tls-max if 13 | you want to set a maximum TLS version. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsv1.2.d: -------------------------------------------------------------------------------- 1 | Long: tlsv1.2 2 | Help: Use TLSv1.2 or greater 3 | Protocols: TLS 4 | Added: 7.34.0 5 | Category: tls 6 | Example: --tlsv1.2 $URL 7 | See-also: tlsv1.3 8 | --- 9 | Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server. 10 | 11 | In old versions of curl this option was documented to allow _only_ TLS 1.2. 12 | That behavior was inconsistent depending on the TLS library. Use --tls-max if 13 | you want to set a maximum TLS version. 14 | -------------------------------------------------------------------------------- /tests/data/test1304: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unittest 5 | netrc 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | unittest 17 | 18 | 19 | netrc parsing unit tests 20 | 21 | 22 | machine example.com login admin password passwd 23 | machine curl.example.com login none password none 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-ssl-ccc.d: -------------------------------------------------------------------------------- 1 | Long: ftp-ssl-ccc 2 | Help: Send CCC after authenticating 3 | Protocols: FTP 4 | See-also: ssl ftp-ssl-ccc-mode 5 | Added: 7.16.1 6 | Category: ftp tls 7 | Example: --ftp-ssl-ccc ftps://example.com/ 8 | --- 9 | Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after 10 | authenticating. The rest of the control channel communication will be 11 | unencrypted. This allows NAT routers to follow the FTP transaction. The 12 | default mode is passive. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/hostpubsha256.d: -------------------------------------------------------------------------------- 1 | Long: hostpubsha256 2 | Arg: 3 | Help: Acceptable SHA256 hash of the host public key 4 | Protocols: SFTP SCP 5 | Added: 7.80.0 6 | Category: sftp scp 7 | Example: --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/ 8 | See-also: hostpubmd5 9 | --- 10 | Pass a string containing a Base64-encoded SHA256 hash of the remote 11 | host's public key. Curl will refuse the connection with the host 12 | unless the hashes match. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-alpn.d: -------------------------------------------------------------------------------- 1 | Long: no-alpn 2 | Tags: HTTP/2 3 | Protocols: HTTPS 4 | Added: 7.36.0 5 | See-also: no-npn http2 6 | Requires: TLS 7 | Help: Disable the ALPN TLS extension 8 | Category: tls http 9 | Example: --no-alpn $URL 10 | --- 11 | Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built 12 | with an SSL library that supports ALPN. ALPN is used by a libcurl that supports 13 | HTTP/2 to negotiate HTTP/2 support with the server during https sessions. 14 | -------------------------------------------------------------------------------- /tests/data/test1177: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | CURL_VERSION 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify that CURL_VERSION_* in headers and docs are in sync 18 | 19 | 20 | 21 | %SRCDIR/version-scan.pl %SRCDIR/../docs/libcurl/curl_version_info.3 %SRCDIR/../include/curl/curl.h 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/data/test1521: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl_easy_setopt 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | lib%TESTNUMBER 16 | 17 | 18 | 19 | Test all curl_easy_setopt and curl_easy_getinfo options 20 | 21 | 22 | unused 23 | 24 | 25 | 26 | # 27 | # Verify data after the test has been "shot" 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tests/data/test1911: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl_easy_option 5 | 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | 18 | verify that curl_easy_setopt() rejects too long string inputs 19 | 20 | 21 | lib%TESTNUMBER 22 | 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/cmdline-opts/append.d: -------------------------------------------------------------------------------- 1 | Short: a 2 | Long: append 3 | Help: Append to target file when uploading 4 | Protocols: FTP SFTP 5 | Category: ftp sftp 6 | See-also: range continue-at 7 | Example: --upload-file local --append ftp://example.com/ 8 | Added: 4.8 9 | --- 10 | When used in an upload, this makes curl append to the target file instead of 11 | overwriting it. If the remote file does not exist, it will be created. Note 12 | that this flag is ignored by some SFTP servers (including OpenSSH). 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/dns-interface.d: -------------------------------------------------------------------------------- 1 | Long: dns-interface 2 | Arg: 3 | Help: Interface to use for DNS requests 4 | Protocols: DNS 5 | See-also: dns-ipv4-addr dns-ipv6-addr 6 | Added: 7.33.0 7 | Requires: c-ares 8 | Category: dns 9 | Example: --dns-interface eth0 $URL 10 | --- 11 | Tell curl to send outgoing DNS requests through . This option is a 12 | counterpart to --interface (which does not affect DNS). The supplied string 13 | must be an interface name (not an address). 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/remove-on-error.d: -------------------------------------------------------------------------------- 1 | Long: remove-on-error 2 | Help: Remove output file on errors 3 | See-also: fail 4 | Category: curl 5 | Example: --remove-on-error -o output $URL 6 | Added: 7.83.0 7 | --- 8 | When curl returns an error when told to save output in a local file, this 9 | option removes that saved file before exiting. This prevents curl from 10 | leaving a partial file in the case of an error during transfer. 11 | 12 | If the output is not a file, this option has no effect. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/socks5-gssapi.d: -------------------------------------------------------------------------------- 1 | Long: socks5-gssapi 2 | Help: Enable GSS-API auth for SOCKS5 proxies 3 | Added: 7.55.0 4 | Category: proxy auth 5 | Example: --socks5-gssapi --socks5 hostname:4096 $URL 6 | See-also: socks5 7 | --- 8 | Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy. 9 | The GSS-API authentication is enabled by default (if curl is compiled with 10 | GSS-API support). Use --socks5-basic to force username/password authentication 11 | to SOCKS5 proxies. 12 | -------------------------------------------------------------------------------- /tests/data/test1409: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | cmdline 5 | FAILURE 6 | 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | Pass in string to -C 18 | 19 | 20 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER -C wrong 21 | 22 | 23 | 24 | # 25 | # Verify data after the test has been "shot" 26 | 27 | 28 | 2 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /tests/data/test1550: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | multi 5 | 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | # tool is what to use instead of 'curl' 18 | 19 | lib%TESTNUMBER 20 | 21 | 22 | 23 | verify setting pipeling blocklisting options 24 | 25 | 26 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-create-dirs.d: -------------------------------------------------------------------------------- 1 | Long: ftp-create-dirs 2 | Protocols: FTP SFTP 3 | Help: Create the remote dirs if not present 4 | See-also: create-dirs 5 | Category: ftp sftp curl 6 | Example: --ftp-create-dirs -T file ftp://example.com/remote/path/file 7 | Added: 7.10.7 8 | --- 9 | When an FTP or SFTP URL/operation uses a path that does not currently exist on 10 | the server, the standard behavior of curl is to fail. Using this option, curl 11 | will instead attempt to create missing directories. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/hostpubmd5.d: -------------------------------------------------------------------------------- 1 | Long: hostpubmd5 2 | Arg: 3 | Help: Acceptable MD5 hash of the host public key 4 | Protocols: SFTP SCP 5 | Added: 7.17.1 6 | Category: sftp scp 7 | Example: --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/ 8 | See-also: hostpubsha256 9 | --- 10 | Pass a string containing 32 hexadecimal digits. The string should 11 | be the 128 bit MD5 checksum of the remote host's public key, curl will refuse 12 | the connection with the host unless the md5sums match. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-npn.d: -------------------------------------------------------------------------------- 1 | Long: no-npn 2 | Tags: Versions HTTP/2 3 | Protocols: HTTPS 4 | Added: 7.36.0 5 | Mutexed: 6 | See-also: no-alpn http2 7 | Requires: TLS 8 | Help: Disable the NPN TLS extension 9 | Category: tls http 10 | Example: --no-npn $URL 11 | --- 12 | Disable the NPN TLS extension. NPN is enabled by default if libcurl was built 13 | with an SSL library that supports NPN. NPN is used by a libcurl that supports 14 | HTTP/2 to negotiate HTTP/2 support with the server during https sessions. 15 | -------------------------------------------------------------------------------- /tests/data/test226: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FAILURE 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | ftp 13 | 14 | 15 | FTP %0d-code in URL's CWD part 16 | 17 | 18 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER%0d 19 | 20 | 21 | 22 | # Verify data after the test has been "shot" 23 | 24 | # 3 == CURLE_URL_MALFORMAT 25 | 26 | 3 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /docs/cmdline-opts/abstract-unix-socket.d: -------------------------------------------------------------------------------- 1 | Long: abstract-unix-socket 2 | Arg: 3 | Help: Connect via abstract Unix domain socket 4 | Added: 7.53.0 5 | Protocols: HTTP 6 | Category: connection 7 | See-also: unix-socket 8 | Example: --abstract-unix-socket socketpath $URL 9 | --- 10 | Connect through an abstract Unix domain socket, instead of using the network. 11 | Note: netstat shows the path of an abstract socket prefixed with '@', however 12 | the argument should not have this leading character. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ciphers.d: -------------------------------------------------------------------------------- 1 | Long: ciphers 2 | Arg: 3 | Help: SSL ciphers to use 4 | Protocols: TLS 5 | Category: tls 6 | See-also: tlsv1.3 7 | Example: --ciphers ECDHE-ECDSA-AES256-CCM8 $URL 8 | Added: 7.9 9 | --- 10 | Specifies which ciphers to use in the connection. The list of ciphers must 11 | specify valid ciphers. Read up on SSL cipher list details on this URL: 12 | 13 | https://curl.se/docs/ssl-ciphers.html 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-progress-meter.d: -------------------------------------------------------------------------------- 1 | Long: no-progress-meter 2 | Help: Do not show the progress meter 3 | See-also: verbose silent 4 | Added: 7.67.0 5 | Category: verbose 6 | Example: --no-progress-meter -o store $URL 7 | --- 8 | Option to switch off the progress meter output without muting or otherwise 9 | affecting warning and informational messages like --silent does. 10 | 11 | Note that this is the negated option name documented. You can thus use 12 | --progress-meter to enable the progress meter again. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/post303.d: -------------------------------------------------------------------------------- 1 | Long: post303 2 | Help: Do not switch to GET after following a 303 3 | Protocols: HTTP 4 | See-also: post302 post301 location 5 | Added: 7.26.0 6 | Category: http post 7 | Example: --post303 --location -d "data" $URL 8 | --- 9 | Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET 10 | requests when following 303 redirections. A server may require a POST to 11 | remain a POST after a 303 redirection. This option is meaningful only when 12 | using --location. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/stderr.d: -------------------------------------------------------------------------------- 1 | Long: stderr 2 | Arg: 3 | Help: Where to redirect stderr 4 | See-also: verbose silent 5 | Category: verbose 6 | Example: --stderr output.txt $URL 7 | Added: 6.2 8 | --- 9 | Redirect all writes to stderr to the specified file instead. If the file name 10 | is a plain '-', it is instead written to stdout. 11 | 12 | This option is global and does not need to be specified for each use of 13 | --next. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /tests/data/test1119: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | symbols-in-versions 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify that symbols-in-versions and headers are in sync 18 | 19 | 20 | 21 | %SRCDIR/symbol-scan.pl %SRCDIR/.. ../include/curl 22 | 23 | 24 | 25 | 26 | 27 | OK 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tests/data/test1427: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | integer overflow 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | too large -m timeout value 16 | 17 | 18 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER -m 184467440737095510 19 | 20 | 21 | 22 | # 23 | # Verify data after the test has been "shot" 24 | 25 | 26 | 2 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/data/test1912: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl_easy_option 5 | typecheck 6 | 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | # Client-side 14 | 15 | 16 | none 17 | 18 | 19 | Cross validate that gcc-typecheck macros match the option types. 20 | 21 | 22 | lib%TESTNUMBER 23 | 24 | 25 | 26 | 27 | # Verify data after the test has been "shot" 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tftp-blksize.d: -------------------------------------------------------------------------------- 1 | Long: tftp-blksize 2 | Arg: 3 | Help: Set TFTP BLKSIZE option 4 | Protocols: TFTP 5 | Added: 7.20.0 6 | Category: tftp 7 | Example: --tftp-blksize 1024 tftp://example.com/file 8 | See-also: tftp-no-options 9 | --- 10 | Set TFTP BLKSIZE option (must be >512). This is the block size that curl will 11 | try to use when transferring data to or from a TFTP server. By default 512 12 | bytes will be used. 13 | 14 | If this option is used several times, the last one will be used. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/parallel-max.d: -------------------------------------------------------------------------------- 1 | Long: parallel-max 2 | Arg: 3 | Help: Maximum concurrency for parallel transfers 4 | Added: 7.66.0 5 | See-also: parallel 6 | Category: connection curl 7 | Example: --parallel-max 100 -Z $URL ftp://example.com/ 8 | --- 9 | When asked to do parallel transfers, using --parallel, this option controls 10 | the maximum amount of transfers to do simultaneously. 11 | 12 | This option is global and does not need to be specified for each use of 13 | --next. 14 | 15 | The default is 50. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/remote-name-all.d: -------------------------------------------------------------------------------- 1 | Long: remote-name-all 2 | Help: Use the remote file name for all URLs 3 | Added: 7.19.0 4 | Category: output 5 | Example: --remote-name-all ftp://example.com/file1 ftp://example.com/file2 6 | See-also: remote-name 7 | --- 8 | This option changes the default action for all given URLs to be dealt with as 9 | if --remote-name were used for each one. So if you want to disable that for a 10 | specific URL after --remote-name-all has been used, you must use "-o -" or 11 | --no-remote-name. 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/silent.d: -------------------------------------------------------------------------------- 1 | Long: silent 2 | Short: s 3 | Help: Silent mode 4 | See-also: verbose stderr no-progress-meter 5 | Category: important verbose 6 | Example: -s $URL 7 | Added: 4.0 8 | --- 9 | Silent or quiet mode. Do not show progress meter or error messages. Makes Curl 10 | mute. It will still output the data you ask for, potentially even to the 11 | terminal/stdout unless you redirect it. 12 | 13 | Use --show-error in addition to this option to disable progress meter but 14 | still show error messages. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/speed-limit.d: -------------------------------------------------------------------------------- 1 | Long: speed-limit 2 | Short: Y 3 | Arg: 4 | Help: Stop transfers slower than this 5 | Category: connection 6 | Example: --speed-limit 300 --speed-time 10 $URL 7 | Added: 4.7 8 | See-also: speed-time limit-rate max-time 9 | --- 10 | If a download is slower than this given speed (in bytes per second) for 11 | speed-time seconds it gets aborted. speed-time is set with --speed-time and is 12 | 30 if not set. 13 | 14 | If this option is used several times, the last one will be used. 15 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-sv.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn6kwUPlwvDN/H6rGXloK 3 | 9s+ZIs28OkHndrwFAYUkzSJ5RyZNap1BzzGAIB9fOocvT/9cI6xnC/QUWKdH13YD 4 | U/6zDSMIGf+0rEe9YJDIBJQFy88bEKq7CEZUQqgrzDX5arlGnoJHGHfPwEgfXNKb 5 | 7f2NPSkLILfdAmAnYhhzHAyxgi08nB62Pob0DtMCUPH4AYcyii3FYQuqlPCzKT9J 6 | p/ZK3XUwwGKXFGveTXFEQDmOCPW5c0HV6xLYzl2+KXbqa5QY1yxDXokS8VDyLcBt 7 | GQeZlvOoRvM76MgdDfpUlqAmLE/AYISpITkPRCjk4xF55KNE4iDhnWVUoidWZ5QC 8 | JwIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost0h-sv.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuP5quIoOuzSQz0jn3Q0m 3 | MmcKTqqcTP3rb+G4mF2xQ9QJT2LYTXzWCzaTV/thArmNNSCb3n2j1Q2ORJjUkTGi 4 | HpqEzABSS3jDV1dr1yUpvxRQIG8a7jz8u78eH82ot/2Nrsx4B8ADhv3t24bBK4FV 5 | RUpQB/2NhaTpKdy74tXd3Tr4YiE8MNBaiHFnU6946n4IQDJlFny/ybr1Bh4C8vi3 6 | OciFwHgU0tn9K4sMP9qDSC8mJDQb+nAHRrQB6g3M14Gp8WbFTj1+tLO0ZKPqD/8B 7 | VMGLH+ll1fy8cUNpLlD0AxKlkZUgNtyR66qrjzBsZiIg3h24WdEWqHFVSmb+dpye 8 | 6QIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /tests/data/test1450: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | DICT 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | dict 18 | 19 | 20 | dict 21 | 22 | 23 | Basic DICT lookup 24 | 25 | 26 | dict://%HOSTIP:%DICTPORT/d:basic 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test225: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FAILURE 6 | 7 | 8 | # Client-side 9 | 10 | 11 | ftp 12 | 13 | 14 | FTP %0a-code in URL's name part 15 | 16 | 17 | ftp://bad%0auser:passwd@%HOSTIP:%FTPPORT/%TESTNUMBER%0a 18 | 19 | 20 | 21 | # Verify data after the test has been "shot" 22 | 23 | # 3 == CURLE_URL_MALFORMAT 24 | 25 | 3 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/data/test360: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --fail 5 | --fail-with-body 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | http 13 | 14 | 15 | Error on both --fail-with-body and --fail 16 | 17 | 18 | http://%HOSTIP:%HTTPPORT/%TESTNUMBER --fail-with-body --fail 19 | 20 | 21 | 22 | # Verify data after the test has been "shot" 23 | 24 | 25 | 2 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Feature request 4 | url: https://curl.se/mail/ 5 | about: To propose new features or enhancements, please bring that discussion to a suitable curl mailing list. 6 | - name: Question 7 | url: https://curl.se/mail/ 8 | about: Questions should go to the mailing list 9 | - name: Commercial support 10 | url: https://curl.se/support.html 11 | about: Several companies are offering paid support for curl/libcurl 12 | -------------------------------------------------------------------------------- /docs/cmdline-opts/request-target.d: -------------------------------------------------------------------------------- 1 | Long: request-target 2 | Arg: 3 | Help: Specify the target for this request 4 | Protocols: HTTP 5 | Added: 7.55.0 6 | Category: http 7 | Example: --request-target "*" -X OPTIONS $URL 8 | See-also: request 9 | --- 10 | Tells curl to use an alternative "target" (path) instead of using the path as 11 | provided in the URL. Particularly useful when wanting to issue HTTP requests 12 | without leading slash or other data that does not follow the regular URL 13 | pattern, like "OPTIONS *". 14 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost.nn-sv.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9B5eTIyHngn412I9OPte 3 | m2JbAi6V9QoUgtQH/OfzlsMSGrkk+vRBf3ZWPY1yISpJz1RCCYcWApiwqcXG0/Jg 4 | rbthF6LqNTEc37sn/p359/9qchCjRHU7tT52G/dgpjHKT2IOfm2ZnI4wYf835sGR 5 | ZQyho2EB73Xcj1KcWzlFNWPK+8rddkoCeMSwLOziyN4nn9a56zneoSOZ1WWXeOJ8 6 | CFWXkYRw9IjAWZzy8P5ccXi/ho4SkoUfFe3Tg/wlUPSGBM13ewya66vpy0OYxB5u 7 | 3tImnY6hyN9Ppma/KTtuernSvnQWxrTDRpsJGUKbBXWutZxbo9XhdmVZObyZXQCQ 8 | hwIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /tests/data/test1410: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | cmdline 5 | FAILURE 6 | 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | Pass in negative number to --max-time 18 | 19 | 20 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER --max-time -4 21 | 22 | 23 | 24 | # 25 | # Verify data after the test has been "shot" 26 | 27 | 28 | 2 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/cmdline-opts/basic.d: -------------------------------------------------------------------------------- 1 | Long: basic 2 | Help: Use HTTP Basic Authentication 3 | See-also: proxy-basic 4 | Protocols: HTTP 5 | Category: auth 6 | Example: -u name:password --basic $URL 7 | Added: 7.10.6 8 | --- 9 | Tells curl to use HTTP Basic authentication with the remote host. This is the 10 | default and this option is usually pointless, unless you use it to override a 11 | previously set option that sets a different authentication method (such as 12 | --ntlm, --digest, or --negotiate). 13 | 14 | Used together with --user. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-ssl-ccc-mode.d: -------------------------------------------------------------------------------- 1 | Long: ftp-ssl-ccc-mode 2 | Arg: 3 | Help: Set CCC mode 4 | Protocols: FTP 5 | Added: 7.16.2 6 | See-also: ftp-ssl-ccc 7 | Category: ftp tls 8 | Example: --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/ 9 | --- 10 | Sets the CCC mode. The passive mode will not initiate the shutdown, but 11 | instead wait for the server to do it, and will not reply to the shutdown from 12 | the server. The active mode initiates the shutdown and waits for a reply from 13 | the server. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/local-port.d: -------------------------------------------------------------------------------- 1 | Long: local-port 2 | Arg: 3 | Help: Force use of RANGE for local port numbers 4 | Added: 7.15.2 5 | Category: connection 6 | Example: --local-port 1000-3000 $URL 7 | See-also: globoff 8 | --- 9 | Set a preferred single number or range (FROM-TO) of local port numbers to use 10 | for the connection(s). Note that port numbers by nature are a scarce resource 11 | that will be busy at times so setting this range to something too narrow might 12 | cause unnecessary connection setup failures. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/socks5-gssapi-nec.d: -------------------------------------------------------------------------------- 1 | Long: socks5-gssapi-nec 2 | Help: Compatibility with NEC SOCKS5 server 3 | Added: 7.19.4 4 | Category: proxy auth 5 | Example: --socks5-gssapi-nec --socks5 hostname:4096 $URL 6 | See-also: socks5 7 | --- 8 | As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961 9 | says in section 4.3/4.4 it should be protected, but the NEC reference 10 | implementation does not. The option --socks5-gssapi-nec allows the 11 | unprotected exchange of the protection mode negotiation. 12 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-firstSAN-sv.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtaBWZf8aHZpN8Re+FMcy 3 | /lGgoyImWWzVDHSpbCYcppJmHZYOWct9BQGwMRPc2+aB8XlDgAg3dC5RgraHfP2H 4 | Lf3Q00IyyajRzOA3f+I+ZZLSTf157e8j1TEv++9fA2hJanyq6XAja0OVvV7R+Ban 5 | 1eC9f2NEpCxNNBYyERLO3xak2Aaly9RMzymsZ8GCJsEL/0Sv87KJMaIQ/aUy+ARO 6 | azIdJF6DiT1JnDQkWhPdLAssXLNfvvxt277DxEBt6FG/4f478ChCJPVoxC4A+iE0 7 | 8NGUP2VQGY2+zwcqCE9ocHf2FHhFL3DaRyZRcx27spPhI3dtoEdONMev/alTQern 8 | cwIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /tests/certs/Server-localhost-lastSAN-sv.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvZcOp222c4zQIWvzNnRd 3 | Cqo68PpusVwcE3TKZysiA9GmPCXvh0/oOJ8hHS6IEjZmggMCTPgXNQKVMbFTQCEk 4 | LwDwv4BYFrGSs9N4v3jLCpEM0m1dsh9BcxYCfBrNFiXJ4RuBvYSTTGPOOPQ+rZhr 5 | AImouvV+CIPzmvWYuJ/W2MfU8wccj++8KRBgjIWLTHpzx5+oIy/ER/UYhZj7J95Y 6 | k0sIpWbJ39vwIvhkn6FWiZerAixamfJvv3IxkCIyroYlaxPGcuzfLsgSAMHjOLSg 7 | QLoBYcLXse99SykY4v4o0JjkZT9MNDnkgqnKsj3EkY+glL/j+LNzSLf++gRD57W8 8 | vQIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /tests/data/test1139: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | symbols-in-versions 6 | documentation 7 | --manual 8 | 9 | 10 | 11 | # 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | 18 | 19 | Verify that all libcurl options have man pages 20 | 21 | 22 | 23 | %SRCDIR/manpage-scan.pl %SRCDIR/.. %PWD/.. 24 | 25 | 26 | 27 | 28 | 29 | 0 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/cmdline-opts/globoff.d: -------------------------------------------------------------------------------- 1 | Long: globoff 2 | Short: g 3 | Help: Disable URL sequences and ranges using {} and [] 4 | Category: curl 5 | Example: -g "https://example.com/{[]}}}}" 6 | Added: 7.6 7 | See-also: config disable 8 | --- 9 | This option switches off the "URL globbing parser". When you set this option, 10 | you can specify URLs that contain the letters {}[] without having curl itself 11 | interpret them. Note that these letters are not normal legal URL contents but 12 | they should be encoded according to the URI standard. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/help.d: -------------------------------------------------------------------------------- 1 | Long: help 2 | Arg: 3 | Short: h 4 | Help: Get help for commands 5 | Category: important curl 6 | Example: --help all 7 | Added: 4.0 8 | See-also: verbose 9 | --- 10 | Usage help. This lists all commands of the . 11 | If no arg was provided, curl will display the most important 12 | command line arguments. 13 | If the argument "all" was provided, curl will display all options available. 14 | If the argument "category" was provided, curl will display all categories and 15 | their meanings. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/max-redirs.d: -------------------------------------------------------------------------------- 1 | Long: max-redirs 2 | Arg: 3 | Help: Maximum number of redirects allowed 4 | Protocols: HTTP 5 | Category: http 6 | Example: --max-redirs 3 --location $URL 7 | Added: 7.5 8 | See-also: location 9 | --- 10 | Set maximum number of redirections to follow. When --location is used, to 11 | prevent curl from following too many redirects, by default, the limit is 12 | set to 50 redirects. Set this option to -1 to make it unlimited. 13 | 14 | If this option is used several times, the last one will be used. 15 | -------------------------------------------------------------------------------- /tests/data/test1530: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CURLOPT_OPENSOCKETFUNCTION 5 | 6 | 7 | 8 | 9 | 10 | none 11 | 12 | 13 | http 14 | 15 | 16 | lib%TESTNUMBER 17 | 18 | 19 | CURLOPT_OPENSOCKETFUNCTION returns bad socket 20 | 21 | 22 | 23 | # it should be detected and an error should be reported 24 | 25 | # 7 == CURLE_COULDNT_CONNECT 26 | 27 | 7 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tests/data/test1564: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | multi 5 | wakeup 6 | 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | # Client-side 14 | 15 | 16 | wakeup 17 | 18 | 19 | none 20 | 21 | 22 | lib%TESTNUMBER 23 | 24 | 25 | wakeup before poll with no easy handles 26 | 27 | 28 | 29 | 30 | 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test404: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FTPS 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | SSL 14 | 15 | 16 | ftps 17 | 18 | 19 | FTPS with invalid cacert 20 | 21 | 22 | --ftp-ssl-control --cacert moooo ftps://%HOSTIP:%FTPSPORT/ 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 77 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/data/test660: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IMAP 5 | CONNECT_ONLY 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | imap 13 | 14 | 15 | lib597 16 | 17 | 18 | IMAP CONNECT_ONLY option 19 | 20 | 21 | 22 | imap://%HOSTIP:%IMAPPORT/%TESTNUMBER 23 | 24 | 25 | 26 | 27 | # 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | A001 CAPABILITY 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /docs/cmdline-opts/dns-ipv4-addr.d: -------------------------------------------------------------------------------- 1 | Long: dns-ipv4-addr 2 | Arg:
3 | Help: IPv4 address to use for DNS requests 4 | Protocols: DNS 5 | See-also: dns-interface dns-ipv6-addr 6 | Added: 7.33.0 7 | Requires: c-ares 8 | Category: dns 9 | Example: --dns-ipv4-addr 10.1.2.3 $URL 10 | --- 11 | Tell curl to bind to when making IPv4 DNS requests, so that 12 | the DNS requests originate from this address. The argument should be a 13 | single IPv4 address. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/haproxy-protocol.d: -------------------------------------------------------------------------------- 1 | Long: haproxy-protocol 2 | Help: Send HAProxy PROXY protocol v1 header 3 | Protocols: HTTP 4 | Added: 7.60.0 5 | Category: http proxy 6 | Example: --haproxy-protocol $URL 7 | See-also: proxy 8 | --- 9 | Send a HAProxy PROXY protocol v1 header at the beginning of the 10 | connection. This is used by some load balancers and reverse proxies to 11 | indicate the client's true IP address and port. 12 | 13 | This option is primarily useful when sending test requests to a service that 14 | expects this header. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/dns-ipv6-addr.d: -------------------------------------------------------------------------------- 1 | Long: dns-ipv6-addr 2 | Arg:
3 | Help: IPv6 address to use for DNS requests 4 | Protocols: DNS 5 | See-also: dns-interface dns-ipv4-addr 6 | Added: 7.33.0 7 | Requires: c-ares 8 | Category: dns 9 | Example: --dns-ipv6-addr 2a04:4e42::561 $URL 10 | --- 11 | Tell curl to bind to when making IPv6 DNS requests, so that 12 | the DNS requests originate from this address. The argument should be a 13 | single IPv6 address. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxy1.0.d: -------------------------------------------------------------------------------- 1 | Long: proxy1.0 2 | Arg: 3 | Help: Use HTTP/1.0 proxy on given port 4 | Category: proxy 5 | Example: --proxy1.0 -x http://proxy $URL 6 | Added: 7.19.4 7 | See-also: proxy socks5 preproxy 8 | --- 9 | Use the specified HTTP 1.0 proxy. If the port number is not specified, it is 10 | assumed at port 1080. 11 | 12 | The only difference between this and the HTTP proxy option --proxy, is that 13 | attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol 14 | instead of the default HTTP 1.1. 15 | -------------------------------------------------------------------------------- /tests/data/test289: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | STOR 6 | Resume 7 | FAILURE 8 | 9 | 10 | 11 | # Client-side 12 | 13 | 14 | ftp 15 | 16 | 17 | FTP resume upload but denied access to local file 18 | 19 | 20 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/illegal-nonexistent-file -C - 21 | 22 | 23 | 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 26 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/cmdline-opts/compressed.d: -------------------------------------------------------------------------------- 1 | Long: compressed 2 | Help: Request compressed response 3 | Protocols: HTTP 4 | Category: http 5 | Example: --compressed $URL 6 | See-also: compressed-ssh 7 | Added: 7.10 8 | --- 9 | Request a compressed response using one of the algorithms curl supports, and 10 | automatically decompress the content. Headers are not modified. 11 | 12 | If this option is used and the server sends an unsupported encoding, curl will 13 | report an error. This is a request, not an order; the server may or may not 14 | deliver data compressed. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/junk-session-cookies.d: -------------------------------------------------------------------------------- 1 | Long: junk-session-cookies 2 | Short: j 3 | Help: Ignore session cookies read from file 4 | Protocols: HTTP 5 | See-also: cookie cookie-jar 6 | Category: http 7 | Example: --junk-session-cookies -b cookies.txt $URL 8 | Added: 7.9.7 9 | --- 10 | When curl is told to read cookies from a given file, this option will make it 11 | discard all "session cookies". This will basically have the same effect as if 12 | a new session is started. Typical browsers always discard session cookies when 13 | they are closed down. 14 | -------------------------------------------------------------------------------- /tests/data/test201: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | FAILURE 6 | 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | file 19 | 20 | 21 | missing file:// file 22 | 23 | 24 | file://localhost/%PWD/log/non-existent-file.txt 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 37 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test2043: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | HTTP GET 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | Schannel 14 | 15 | 16 | none 17 | 18 | 19 | Disable certificate revocation checks 20 | 21 | 22 | --ssl-no-revoke -I https://revoked.badssl.com/ 23 | 24 | 25 | 26 | # 27 | # Verify data after the test has been "shot" 28 | 29 | 30 | 0 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test23: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | unsupported protocol 5 | FAILURE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | 13 | 14 | # Client-side 15 | 16 | 17 | http 18 | 19 | 20 | unsupported protocol:// URL 21 | 22 | 23 | htfp://%HOSTIP:%HTTPPORT/none.htfml 24 | 25 | 26 | 27 | # Verify data after the test has been "shot" 28 | 29 | 30 | 1 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test41: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP FORMPOST 6 | FAILURE 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | # Client-side 14 | 15 | 16 | http 17 | 18 | 19 | HTTP formpost with missing file 20 | 21 | 22 | http://%HOSTIP:%HTTPPORT/want/%TESTNUMBER -F moo=@boo 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 26 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | ![curl logo](https://curl.se/logo/curl-logo.svg) 2 | 3 | # Documentation 4 | 5 | you will find a mix of various documentation in this directory and 6 | subdirectories, using several different formats. Some of them are not ideal 7 | for reading directly in your browser. 8 | 9 | If you would rather see the rendered version of the documentation, check out the 10 | curl website's [documentation section](https://curl.se/docs/) for 11 | general curl stuff or the [libcurl section](https://curl.se/libcurl/) for 12 | libcurl related documentation. 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/http0.9.d: -------------------------------------------------------------------------------- 1 | Long: http0.9 2 | Tags: Versions 3 | Protocols: HTTP 4 | Help: Allow HTTP 0.9 responses 5 | Category: http 6 | Example: --http0.9 $URL 7 | Added: 7.64.0 8 | See-also: http1.1 http2 http3 9 | --- 10 | Tells curl to be fine with HTTP version 0.9 response. 11 | 12 | HTTP/0.9 is a completely headerless response and therefore you can also 13 | connect with this to non-HTTP servers and still get a response since curl will 14 | simply transparently downgrade - if allowed. 15 | 16 | Since curl 7.66.0, HTTP/0.9 is disabled by default. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/krb.d: -------------------------------------------------------------------------------- 1 | Long: krb 2 | Arg: 3 | Help: Enable Kerberos with security 4 | Protocols: FTP 5 | Requires: Kerberos 6 | Category: ftp 7 | Example: --krb clear ftp://example.com/ 8 | Added: 7.3 9 | See-also: delegation ssl 10 | --- 11 | Enable Kerberos authentication and use. The level must be entered and should 12 | be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a 13 | level that is not one of these, 'private' will instead be used. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/xattr.d: -------------------------------------------------------------------------------- 1 | Long: xattr 2 | Help: Store metadata in extended file attributes 3 | Category: misc 4 | Example: --xattr -o storage $URL 5 | Added: 7.21.3 6 | See-also: remote-time write-out verbose 7 | --- 8 | When saving output to a file, this option tells curl to store certain file 9 | metadata in extended file attributes. Currently, the URL is stored in the 10 | xdg.origin.url attribute and, for HTTP, the content type is stored in 11 | the mime_type attribute. If the file system does not support extended 12 | attributes, a warning is issued. 13 | -------------------------------------------------------------------------------- /include/README.md: -------------------------------------------------------------------------------- 1 | # include 2 | 3 | Public include files for libcurl, external users. 4 | 5 | They're all placed in the curl subdirectory here for better fit in any kind of 6 | environment. You must include files from here using... 7 | 8 | #include 9 | 10 | ... style and point the compiler's include path to the directory holding the 11 | curl subdirectory. It makes it more likely to survive future modifications. 12 | 13 | The public curl include files can be shared freely between different platforms 14 | and different architectures. 15 | -------------------------------------------------------------------------------- /tests/data/test305: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | HTTP GET 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | SSL 14 | 15 | 16 | https 17 | 18 | 19 | insecure HTTPS without permission 20 | 21 | 22 | https://%HOSTIP:%HTTPSPORT/want/%TESTNUMBER --cacert moooo 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 77 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/data/test971: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | options-in-versions 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | none 14 | 15 | 16 | 17 | Verify that options-in-versions and docs/cmdline-opts are in sync 18 | 19 | 20 | 21 | %SRCDIR/options-scan.pl %SRCDIR/../docs/options-in-versions %SRCDIR/../docs/cmdline-opts 22 | 23 | 24 | 25 | 26 | 27 | ok 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-alternative-to-user.d: -------------------------------------------------------------------------------- 1 | Long: ftp-alternative-to-user 2 | Arg: 3 | Help: String to replace USER [name] 4 | Protocols: FTP 5 | Added: 7.15.5 6 | Category: ftp 7 | Example: --ftp-alternative-to-user "U53r" ftp://example.com 8 | See-also: ftp-account user 9 | --- 10 | If authenticating with the USER and PASS commands fails, send this command. 11 | When connecting to Tumbleweed's Secure Transport server over FTPS using a 12 | client certificate, using "SITE AUTH" will tell the server to retrieve the 13 | username from the certificate. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/netrc-file.d: -------------------------------------------------------------------------------- 1 | Long: netrc-file 2 | Help: Specify FILE for netrc 3 | Arg: 4 | Added: 7.21.5 5 | Mutexed: netrc 6 | Category: curl 7 | Example: --netrc-file netrc $URL 8 | See-also: netrc user config 9 | --- 10 | This option is similar to --netrc, except that you provide the path (absolute 11 | or relative) to the netrc file that curl should use. You can only specify one 12 | netrc file per invocation. If several --netrc-file options are provided, 13 | the last one will be used. 14 | 15 | It will abide by --netrc-optional if specified. 16 | -------------------------------------------------------------------------------- /tests/data/test1508: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | multi 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | lib%TESTNUMBER 16 | 17 | 18 | Close a multi handle without using it 19 | 20 | 21 | http://%HOSTIP:%NOLISTENPORT/path/%TESTNUMBER 22 | 23 | 24 | 25 | # Verify data after the test has been "shot" 26 | 27 | 28 | We are done 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /tests/data/test21: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FAILURE 5 | multiple HTTP requests 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | 13 | 14 | # Client-side 15 | 16 | 17 | http 18 | 19 | 20 | use curl with multiple request methods 21 | 22 | 23 | -I -d FOOO -F moo=moo localhost 24 | 25 | 26 | 27 | # Verify data after the test has been "shot" 28 | 29 | 30 | 2 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test3016: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | FILE 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | file 15 | 16 | 17 | GET a directory using file:// 18 | 19 | 20 | 21 | !win32 22 | 23 | 24 | file://%PWD/ 25 | 26 | 27 | 28 | # 29 | # Verify data after the test has been "shot" 30 | 31 | 32 | 0 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/cmdline-opts/tlsauthtype.d: -------------------------------------------------------------------------------- 1 | Long: tlsauthtype 2 | Arg: 3 | Help: TLS authentication type 4 | Added: 7.21.4 5 | Category: tls auth 6 | Example: --tlsauthtype SRP $URL 7 | See-also: tlsuser 8 | --- 9 | Set TLS authentication type. Currently, the only supported option is "SRP", 10 | for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but 11 | --tlsauthtype is not, then this option defaults to "SRP". This option works 12 | only if the underlying libcurl is built with TLS-SRP support, which requires 13 | OpenSSL or GnuTLS with TLS-SRP support. 14 | -------------------------------------------------------------------------------- /tests/data/test1918: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl_easy_option 5 | curl_easy_option_by_name 6 | curl_easy_option_by_id 7 | 8 | 9 | 10 | # Server-side 11 | 12 | 13 | 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | curl_easy_option_by_name() and curl_easy_option_by_id() 21 | 22 | 23 | lib%TESTNUMBER 24 | 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test597: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | CONNECT_ONLY 6 | 7 | 8 | 9 | # Client-side 10 | 11 | 12 | ftp 13 | 14 | 15 | lib%TESTNUMBER 16 | 17 | 18 | FTP connect only option 19 | 20 | 21 | 22 | ftp://%HOSTIP:%FTPPORT 23 | 24 | 25 | 26 | 27 | # 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | USER anonymous 32 | PASS ftp@example.com 33 | PWD 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/cmdline-opts/dns-servers.d: -------------------------------------------------------------------------------- 1 | Long: dns-servers 2 | Arg: 3 | Help: DNS server addrs to use 4 | Requires: c-ares 5 | Added: 7.33.0 6 | Category: dns 7 | Example: --dns-servers 192.168.0.1,192.168.0.2 $URL 8 | See-also: dns-interface dns-ipv4-addr 9 | --- 10 | Set the list of DNS servers to be used instead of the system default. 11 | The list of IP addresses should be separated with commas. Port numbers 12 | may also optionally be given as *:* after each IP 13 | address. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/location-trusted.d: -------------------------------------------------------------------------------- 1 | Long: location-trusted 2 | Help: Like --location, and send auth to other hosts 3 | Protocols: HTTP 4 | See-also: user 5 | Category: http auth 6 | Example: --location-trusted -u user:password $URL 7 | Added: 7.10.4 8 | --- 9 | Like --location, but will allow sending the name + password to all hosts that 10 | the site may redirect to. This may or may not introduce a security breach if 11 | the site redirects you to a site to which you will send your authentication 12 | info (which is plaintext in the case of HTTP Basic authentication). 13 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ssl-reqd.d: -------------------------------------------------------------------------------- 1 | Long: ssl-reqd 2 | Help: Require SSL/TLS 3 | Protocols: FTP IMAP POP3 SMTP LDAP 4 | Added: 7.20.0 5 | Category: tls 6 | Example: --ssl-reqd ftp://example.com 7 | See-also: ssl insecure 8 | --- 9 | Require SSL/TLS for the connection. Terminates the connection if the server 10 | does not support SSL/TLS. 11 | 12 | This option is handled in LDAP since version 7.81.0. It is fully supported 13 | by the openldap backend and rejected by the generic ldap backend if explicit 14 | TLS is required. 15 | 16 | This option was formerly known as --ftp-ssl-reqd. 17 | -------------------------------------------------------------------------------- /tests/data/test1140: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | symbols-in-versions 6 | documentation 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | 18 | Verify the nroff of man pages 19 | 20 | 21 | 22 | %SRCDIR/nroff-scan.pl %SRCDIR/../docs/ %SRCDIR/../docs/libcurl/*.3 %SRCDIR/../docs/libcurl/opts/*.3 %SRCDIR/../docs/*.1 23 | 24 | 25 | 26 | 27 | 28 | OK 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/data/test1441: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --write-out 5 | FILE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | file 16 | 17 | 18 | 19 | Check --write-out with trailing % 20 | 21 | 22 | file://localhost/%PWD/log/non-existent-file.txt --write-out '%' 23 | 24 | 25 | 26 | # Verify data 27 | 28 | 29 | 37 30 | 31 | 32 | % 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /tests/data/test1442: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --write-out 5 | FILE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | file 16 | 17 | 18 | 19 | Check --write-out with trailing \ 20 | 21 | 22 | file://localhost/%PWD/log/non-existent-file.txt --write-out '\' 23 | 24 | 25 | 26 | # Verify data 27 | 28 | 29 | 37 30 | 31 | 32 | \ 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/cmdline-opts/expect100-timeout.d: -------------------------------------------------------------------------------- 1 | Long: expect100-timeout 2 | Arg: 3 | Help: How long to wait for 100-continue 4 | Protocols: HTTP 5 | Added: 7.47.0 6 | See-also: connect-timeout 7 | Category: http 8 | Example: --expect100-timeout 2.5 -T file $URL 9 | --- 10 | Maximum time in seconds that you allow curl to wait for a 100-continue 11 | response when curl emits an Expects: 100-continue header in its request. By 12 | default curl will wait one second. This option accepts decimal values! When 13 | curl stops waiting, it will continue as if the response has been received. 14 | -------------------------------------------------------------------------------- /tests/data/test1440: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --write-out 5 | FILE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | file 16 | 17 | 18 | 19 | Check --write-out with trailing %{ 20 | 21 | 22 | file://localhost/%PWD/log/non-existent-file.txt --write-out '%{' 23 | 24 | 25 | 26 | # Verify data 27 | 28 | 29 | 37 30 | 31 | 32 | %{ 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/cmdline-opts/digest.d: -------------------------------------------------------------------------------- 1 | Long: digest 2 | Help: Use HTTP Digest Authentication 3 | Protocols: HTTP 4 | Mutexed: basic ntlm negotiate 5 | See-also: user proxy-digest anyauth 6 | Category: proxy auth http 7 | Example: -u name:password --digest $URL 8 | Added: 7.10.6 9 | --- 10 | Enables HTTP Digest authentication. This is an authentication scheme that 11 | prevents the password from being sent over the wire in clear text. Use this in 12 | combination with the normal --user option to set user name and password. 13 | 14 | If this option is used several times, only the first one is used. 15 | -------------------------------------------------------------------------------- /tests/data/test1269: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --retry-delay 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | too large --retry-delay value 21 | 22 | 23 | --retry 3 --retry-delay 9223372036854776 http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER 24 | 25 | 26 | 27 | # 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 2 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test1329: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP proxy 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | http 13 | 14 | 15 | /-prefixed proxy name 16 | 17 | 18 | http://%HOSTIP:%HTTPPORT/we/want/that/page/%TESTNUMBER -x "/server" 19 | 20 | 21 | proxy 22 | 23 | 24 | 25 | # 26 | # Verify data after the test has been "shot" 27 | 28 | # 5 == CURLE_COULDNT_RESOLVE_PROXY 29 | 30 | 5 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test2044: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --proto-default 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | none 16 | 17 | 18 | Attempt to set a default protocol that does not exist 19 | 20 | 21 | --proto-default DOESNOTEXIST 22 | 23 | 24 | 25 | # 26 | # Verify data after the test has been "shot" 27 | 28 | # CURLE_UNSUPPORTED_PROTOCOL is error code 1 29 | 30 | 1 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test923: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | VRFY 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 14 | # 15 | # Client-side 16 | 17 | 18 | smtp 19 | 20 | 21 | SMTP VRFY 22 | 23 | 24 | smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient 25 | 26 | 27 | 28 | # 29 | # Verify data after the test has been "shot" 30 | 31 | 32 | EHLO %TESTNUMBER 33 | VRFY recipient 34 | QUIT 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /.github/workflows/linkcheck.yml: -------------------------------------------------------------------------------- 1 | # Docs: https://github.com/marketplace/actions/markdown-link-check 2 | 3 | name: Markdown links 4 | 5 | on: 6 | # Trigger the workflow on push or pull requests, but only for the 7 | # master branch 8 | push: 9 | branches: 10 | - master 11 | - '*/ci' 12 | pull_request: 13 | branches: 14 | - master 15 | 16 | jobs: 17 | check: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: actions/checkout@master 21 | - uses: gaurav-nelson/github-action-markdown-link-check@v1 22 | with: 23 | use-quiet-mode: 'yes' 24 | -------------------------------------------------------------------------------- /tests/data/test1173: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | source analysis 5 | documentation 6 | --manual 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | 18 | Man page syntax checks 19 | 20 | 21 | 22 | %SRCDIR/manpage-syntax.pl %SRCDIR/../docs/libcurl/symbols-in-versions %SRCDIR/../docs/*.1 %SRCDIR/../docs/libcurl/*.3 %SRCDIR/../docs/libcurl/opts/*.3 23 | 24 | 25 | 26 | 27 | 28 | ok 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/data/test1234: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | globbing 5 | {} list 6 | FAILURE 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | # Client-side 14 | 15 | 16 | none 17 | 18 | 19 | abusing {}-globbing 20 | 21 | 22 | "%HOSTIP:%NOLISTENPORT/%TESTNUMBER[0-1]{" "%HOSTIP:%NOLISTENPORT/{}{}{}{" 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | # 3 == CURLE_URL_MALFORMAT 29 | 30 | 3 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test2036: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FAILURE 5 | 6 | 7 | # 8 | # Server-side 9 | 10 | 11 | 12 | # 13 | # Client-side 14 | 15 | 16 | none 17 | 18 | 19 | http 20 | 21 | 22 | HTTP, -O with no slash at all in the URL 23 | 24 | 25 | %HOSTIP:%NOLISTENPORT -O 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 23 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test629: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SCP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | scp 14 | 15 | 16 | SCP invalid user login (password authentication) 17 | 18 | 19 | -u not-a-valid-user: scp://%HOSTIP:%SSHPORT%SSH_PWD/irrelevant-file --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 67 28 | 29 | 30 | disable 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/cmdline-opts/false-start.d: -------------------------------------------------------------------------------- 1 | Long: false-start 2 | Help: Enable TLS False Start 3 | Protocols: TLS 4 | Added: 7.42.0 5 | Category: tls 6 | Example: --false-start $URL 7 | See-also: tcp-fastopen 8 | --- 9 | Tells curl to use false start during the TLS handshake. False start is a mode 10 | where a TLS client will start sending application data before verifying the 11 | server's Finished message, thus saving a round trip when performing a full 12 | handshake. 13 | 14 | This is currently only implemented in the NSS and Secure Transport (on iOS 7.0 15 | or later, or OS X 10.9 or later) backends. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/retry-delay.d: -------------------------------------------------------------------------------- 1 | Long: retry-delay 2 | Arg: 3 | Help: Wait time between retries 4 | Added: 7.12.3 5 | Category: curl 6 | Example: --retry-delay 5 --retry $URL 7 | See-also: retry 8 | --- 9 | Make curl sleep this amount of time before each retry when a transfer has 10 | failed with a transient error (it changes the default backoff time algorithm 11 | between retries). This option is only interesting if --retry is also 12 | used. Setting this delay to zero will make curl use the default backoff time. 13 | 14 | If this option is used several times, the last one will be used. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/suppress-connect-headers.d: -------------------------------------------------------------------------------- 1 | Long: suppress-connect-headers 2 | Help: Suppress proxy CONNECT response headers 3 | See-also: dump-header include proxytunnel 4 | Category: proxy 5 | Example: --suppress-connect-headers --include -x proxy $URL 6 | Added: 7.54.0 7 | --- 8 | When --proxytunnel is used and a CONNECT request is made do not output proxy 9 | CONNECT response headers. This option is meant to be used with --dump-header or 10 | --include which are used to show protocol headers in the output. It has no 11 | effect on debug options such as --verbose or --trace, or any statistics. 12 | -------------------------------------------------------------------------------- /tests/data/test1289: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | globbing 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | http 19 | 20 | 21 | globbing with overflow and bad syntxx 22 | 23 | 24 | http://ur%20[0-60000000000000000000 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | # curl: (3) [globbing] bad range in column 31 | 32 | 3 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /tests/data/test1557: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | multi 5 | crash 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | none 15 | 16 | 17 | lib%TESTNUMBER 18 | 19 | 20 | 21 | Removing easy handle that's in the pending connections list doesn't leave behind a dangling entry 22 | 23 | 24 | nothing 25 | 26 | 27 | 28 | # 29 | # Verify that the test runs to completion without crashing 30 | 31 | 32 | 0 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test322: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | TLS-SRP 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | httptls+srp 14 | 15 | 16 | TLS-SRP 17 | 18 | 19 | TLS-SRP with bad password 20 | 21 | 22 | --insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPTLSPORT 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 35 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test628: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | sftp 14 | 15 | 16 | SFTP invalid user login (password authentication) 17 | 18 | 19 | -u not-a-valid-user: sftp://%HOSTIP:%SSHPORT%SSH_PWD/irrelevant-file --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 67 28 | 29 | 30 | disable 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test894: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | Clear Text 6 | RETR 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | pop3 20 | 21 | 22 | POP3 with CR in username 23 | 24 | 25 | pop3://user%0dFRIGGING_cmd:secret@%HOSTIP:%POP3PORT/%TESTNUMBER 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | # malformed URL 33 | 34 | 3 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test929: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | NOOP 6 | CUSTOMREQUEST 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | smtp 20 | 21 | 22 | SMTP NOOP (CUSTOMREQUEST) 23 | 24 | 25 | smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER -X NOOP -I 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | EHLO %TESTNUMBER 34 | NOOP 35 | QUIT 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test930: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | RSET 6 | CUSTOMREQUEST 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | smtp 20 | 21 | 22 | SMTP RSET (CUSTOMREQUEST) 23 | 24 | 25 | smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER -X RSET -I 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | EHLO %TESTNUMBER 34 | RSET 35 | QUIT 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/cmdline-opts/dump-header.d: -------------------------------------------------------------------------------- 1 | Long: dump-header 2 | Short: D 3 | Arg: 4 | Help: Write the received headers to 5 | Protocols: HTTP FTP 6 | See-also: output 7 | Category: http ftp 8 | Example: --dump-header store.txt $URL 9 | Added: 5.7 10 | --- 11 | Write the received protocol headers to the specified file. If no headers are 12 | received, the use of this option will create an empty file. 13 | 14 | When used in FTP, the FTP server response lines are considered being "headers" 15 | and thus are saved there. 16 | 17 | If this option is used several times, the last one will be used. 18 | -------------------------------------------------------------------------------- /docs/cmdline-opts/form-string.d: -------------------------------------------------------------------------------- 1 | Long: form-string 2 | Help: Specify multipart MIME data 3 | Protocols: HTTP SMTP IMAP 4 | Arg: 5 | See-also: form 6 | Category: http upload 7 | Example: --form-string "data" $URL 8 | Added: 7.13.2 9 | --- 10 | Similar to --form except that the value string for the named parameter is used 11 | literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in 12 | the value have no special meaning. Use this in preference to --form if 13 | there's any possibility that the string value may accidentally trigger the 14 | \&'@' or \&'<' features of --form. 15 | -------------------------------------------------------------------------------- /docs/cmdline-opts/libcurl.d: -------------------------------------------------------------------------------- 1 | Long: libcurl 2 | Arg: 3 | Help: Dump libcurl equivalent code of this command line 4 | Added: 7.16.1 5 | Category: curl 6 | Example: --libcurl client.c $URL 7 | See-also: verbose 8 | --- 9 | Append this option to any ordinary curl command line, and you will get 10 | libcurl-using C source code written to the file that does the equivalent 11 | of what your command-line operation does! 12 | 13 | This option is global and does not need to be specified for each use of 14 | --next. 15 | 16 | If this option is used several times, the last given file name will be 17 | used. 18 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proto-default.d: -------------------------------------------------------------------------------- 1 | Long: proto-default 2 | Help: Use PROTOCOL for any URL missing a scheme 3 | Arg: 4 | Added: 7.45.0 5 | Category: connection curl 6 | Example: --proto-default https ftp.example.com 7 | See-also: proto proto-redir 8 | --- 9 | Tells curl to use *protocol* for any URL missing a scheme name. 10 | 11 | An unknown or unsupported protocol causes error 12 | *CURLE_UNSUPPORTED_PROTOCOL* (1). 13 | 14 | This option does not change the default proxy protocol (http). 15 | 16 | Without this option set, curl guesses protocol based on the host name, see 17 | --url for details. 18 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ssl-allow-beast.d: -------------------------------------------------------------------------------- 1 | Long: ssl-allow-beast 2 | Help: Allow security flaw to improve interop 3 | Added: 7.25.0 4 | Category: tls 5 | Example: --ssl-allow-beast $URL 6 | See-also: proxy-ssl-allow-beast insecure 7 | --- 8 | This option tells curl to not work around a security flaw in the SSL3 and 9 | TLS1.0 protocols known as BEAST. If this option is not used, the SSL layer 10 | may use workarounds known to cause interoperability problems with some older 11 | SSL implementations. 12 | 13 | **WARNING**: this option loosens the SSL security, and by using this flag you 14 | ask for exactly that. 15 | -------------------------------------------------------------------------------- /tests/data/test19: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | connect to non-listen 6 | FAILURE 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | none 19 | 20 | 21 | http 22 | 23 | 24 | attempt connect to non-listening socket 25 | 26 | 27 | %HOSTIP:%NOLISTENPORT 28 | 29 | 30 | 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 7 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test3019: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | --resolve 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | http 20 | 21 | 22 | HTTP with invalid --resolve syntax 23 | 24 | 25 | --resolve %HTTPPORT:example.com:%HOSTIP http://example.com:%HTTPPORT/%TESTNUMBER 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 49 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test370: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | etag 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | none 20 | 21 | 22 | --etag-save with bad path - no transfer 23 | 24 | 25 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER --etag-save log/nowhere/etag%TESTNUMBER 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 26 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test375: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CURL_DISABLE_PROXY 5 | 6 | 7 | 8 | 9 | 10 | !proxy 11 | 12 | 13 | none 14 | 15 | 16 | Disabled proxy should make curl fail with --proxy 17 | 18 | 19 | -x wohoo http://example.com/ 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | curl: proxy support is disabled in this libcurl 28 | 29 | 30 | 4 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test402: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FTPS 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | SSL 14 | 15 | 16 | ftp 17 | 18 | 19 | FTP SSL required on non-SSL server 20 | 21 | 22 | -k --ftp-ssl-reqd ftp://%HOSTIP:%FTPPORT/%TESTNUMBER 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 64 30 | 31 | 32 | AUTH SSL 33 | AUTH TLS 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/cmdline-opts/http2-prior-knowledge.d: -------------------------------------------------------------------------------- 1 | Long: http2-prior-knowledge 2 | Tags: Versions 3 | Protocols: HTTP 4 | Added: 7.49.0 5 | Mutexed: http1.1 http1.0 http2 http3 6 | Requires: HTTP/2 7 | Help: Use HTTP 2 without HTTP/1.1 Upgrade 8 | Category: http 9 | Example: --http2-prior-knowledge $URL 10 | See-also: http2 http3 11 | --- 12 | Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1 13 | Upgrade. It requires prior knowledge that the server supports HTTP/2 straight 14 | away. HTTPS requests will still do HTTP/2 the standard way with negotiated 15 | protocol version in the TLS handshake. 16 | -------------------------------------------------------------------------------- /tests/data/test3020: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | --connect-to 7 | 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | # 16 | # Client-side 17 | 18 | 19 | http 20 | 21 | 22 | HTTP with invalid --connect-to syntax 23 | 24 | 25 | --connect-to ::example.com:example.com http://example.com:%HTTPPORT/%TESTNUMBER 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 49 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test321: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | TLS-SRP 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | httptls+srp 14 | 15 | 16 | TLS-SRP 17 | 18 | 19 | TLS-SRP with bad username and password 20 | 21 | 22 | --insecure --tlsauthtype SRP --tlsuser baduser --tlspassword badpass https://%HOSTIP:%HTTPTLSPORT 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 35 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test323: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | TLS-SRP 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | https 14 | 15 | 16 | TLS-SRP 17 | 18 | 19 | TLS-SRP to non-TLS-SRP server 20 | 21 | 22 | --insecure --tlsauthtype SRP --tlsuser jsmith --tlspassword badpass https://%HOSTIP:%HTTPSPORT/want/%TESTNUMBER 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 35 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test507: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | multi 6 | FAILURE 7 | non-existing host 8 | 9 | 10 | 11 | # Server-side 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | http 19 | 20 | 21 | multi interface get with non-existing host name 22 | 23 | 24 | lib%TESTNUMBER 25 | 26 | 27 | http://non-existing-host.haxx.se/ 28 | 29 | 30 | 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 6 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test76: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FAILURE 5 | 6 | 7 | # 8 | # Server-side 9 | 10 | 11 | 12 | # 13 | # Client-side 14 | 15 | 16 | none 17 | 18 | 19 | http 20 | 21 | 22 | HTTP, -O with no file name part in the URL 23 | 24 | 25 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER/ -O 26 | 27 | 28 | 29 | # 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 23 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/cmdline-opts/oauth2-bearer.d: -------------------------------------------------------------------------------- 1 | Long: oauth2-bearer 2 | Help: OAuth 2 Bearer Token 3 | Arg: 4 | Protocols: IMAP LDAP POP3 SMTP HTTP 5 | Category: auth 6 | Example: --oauth2-bearer "mF_9.B5f-4.1JqM" $URL 7 | Added: 7.33.0 8 | See-also: basic ntlm digest 9 | --- 10 | Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token 11 | is used in conjunction with the user name which can be specified as part of 12 | the --url or --user options. 13 | 14 | The Bearer Token and user name are formatted according to RFC 6750. 15 | 16 | If this option is used several times, the last one will be used. 17 | -------------------------------------------------------------------------------- /tests/data/test308: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | HTTP GET 6 | FAILURE 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | OpenSSL 15 | !MultiSSL 16 | 17 | 18 | https 19 | 20 | 21 | simple HTTPS GET with invalid crypto engine 22 | 23 | 24 | --engine invalid-crypto-engine-xyzzy -k https://%HOSTIP:%HTTPSPORT/%TESTNUMBER 25 | 26 | 27 | 28 | # 29 | # Verify data after the test has been "shot" 30 | 31 | 32 | 53 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /tests/data/test324: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTPS 5 | TLS-SRP 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | httptls+srp 14 | 15 | 16 | TLS-SRP 17 | 18 | 19 | TLS-SRP with server cert checking 20 | 21 | # no --insecure 22 | --tlsauthtype SRP --tlsuser jsmith --tlspassword abc https://%HOSTIP:%HTTPTLSPORT/want/fails 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | 29 | 60 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test333: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | command-line 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | Try a non-boolean command line option with --no- 21 | 22 | 23 | --no-proxy "hey" http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER 24 | 25 | 26 | 27 | # 28 | # Verify data after the test has been "shot" 29 | 30 | # detected the bad --no- prefix 31 | 32 | 2 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /docs/cmdline-opts/connect-timeout.d: -------------------------------------------------------------------------------- 1 | Long: connect-timeout 2 | Arg: 3 | Help: Maximum time allowed for connection 4 | See-also: max-time 5 | Category: connection 6 | Example: --connect-timeout 20 $URL 7 | Example: --connect-timeout 3.14 $URL 8 | Added: 7.7 9 | --- 10 | Maximum time in seconds that you allow curl's connection to take. This only 11 | limits the connection phase, so if curl connects within the given period it 12 | will continue - if not it will exit. Since version 7.32.0, this option 13 | accepts decimal values. 14 | 15 | If this option is used several times, the last one will be used. 16 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ftp-skip-pasv-ip.d: -------------------------------------------------------------------------------- 1 | Long: ftp-skip-pasv-ip 2 | Help: Skip the IP address for PASV 3 | Protocols: FTP 4 | Added: 7.14.2 5 | See-also: ftp-pasv 6 | Category: ftp 7 | Example: --ftp-skip-pasv-ip ftp://example.com/ 8 | --- 9 | Tell curl to not use the IP address the server suggests in its response 10 | to curl's PASV command when curl connects the data connection. Instead curl 11 | will re-use the same IP address it already uses for the control 12 | connection. 13 | 14 | Since curl 7.74.0 this option is enabled by default. 15 | 16 | This option has no effect if PORT, EPRT or EPSV is used instead of PASV. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-buffer.d: -------------------------------------------------------------------------------- 1 | Long: no-buffer 2 | Short: N 3 | Help: Disable buffering of the output stream 4 | Category: curl 5 | Example: --no-buffer $URL 6 | Added: 6.5 7 | See-also: progress-bar 8 | --- 9 | Disables the buffering of the output stream. In normal work situations, curl 10 | will use a standard buffered output stream that will have the effect that it 11 | will output the data in chunks, not necessarily exactly when the data arrives. 12 | Using this option will disable that buffering. 13 | 14 | Note that this is the negated option name documented. You can thus use 15 | --buffer to enforce the buffering. 16 | -------------------------------------------------------------------------------- /tests/data/test1069: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP PUT 6 | HTTP/1.0 7 | 8 | 9 | 10 | # Server-side 11 | 12 | 13 | 14 | # Client-side 15 | 16 | 17 | http 18 | 19 | 20 | HTTP 1.0 PUT from stdin with no content length 21 | 22 | 23 | http://%HOSTIP:%HTTPPORT/bzz/%TESTNUMBER -T - -0 24 | 25 | 26 | this data can't be sent 27 | 28 | 29 | 30 | # Verify data after the test has been "shot" 31 | 32 | 33 | 25 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test1264: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 13 | # Client-side 14 | 15 | 16 | none 17 | 18 | 19 | http 20 | 21 | 22 | HTTP URL with space in host name 23 | 24 | 25 | -g "http://127.0.0.1 www.example.com/we/want/%TESTNUMBER" 26 | 27 | 28 | 29 | # Verify data after the test has been "shot" 30 | 31 | # CURLE_URL_MALFORMAT == 3 32 | 33 | 3 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tests/data/test20: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | FAILURE 6 | non-existing host 7 | 8 | 9 | 10 | # Server-side 11 | 12 | 13 | 14 | 15 | 16 | # Client-side 17 | 18 | 19 | none 20 | 21 | 22 | http 23 | 24 | 25 | attempt connect to non-existing host name 26 | 27 | 28 | --ipv4 non-existing-host.haxx.se. 29 | 30 | 31 | 32 | # Verify data after the test has been "shot" 33 | 34 | 35 | 6 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test2075: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --disallow-username-in-url 5 | HTTP 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | http 14 | 15 | 16 | none 17 | 18 | 19 | Verify usernames are not allowed in url 20 | 21 | 22 | --disallow-username-in-url http://username:password@example.com/ 23 | 24 | 25 | 26 | # 27 | # Verify data after the test has been "shot" 28 | 29 | # CURLE_LOGIN_DENIED is code 67 30 | 31 | 67 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test605: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SCP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | scp 14 | 15 | 16 | SCP retrieval of nonexistent file 17 | 18 | 19 | --key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/not-a-valid-file-moooo --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 78 28 | 29 | 30 | disable 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test607: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SCP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | scp 14 | 15 | 16 | SCP invalid user login 17 | 18 | 19 | --key curl_client_key --pubkey curl_client_key.pub -u not-a-valid-user: scp://%HOSTIP:%SSHPORT%SSH_PWD/not-a-valid-file-moooo --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 67 28 | 29 | 30 | disable 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/cmdline-opts/cert-type.d: -------------------------------------------------------------------------------- 1 | Long: cert-type 2 | Protocols: TLS 3 | Arg: 4 | Help: Certificate type (DER/PEM/ENG/P12) 5 | See-also: cert key key-type 6 | Category: tls 7 | Example: --cert-type PEM --cert file $URL 8 | Added: 7.9.3 9 | --- 10 | Tells curl what type the provided client certificate is using. PEM, DER, ENG 11 | and P12 are recognized types. 12 | 13 | The default type depends on the TLS backend and is usually PEM, however for 14 | Secure Transport and Schannel it is P12. If --cert is a pkcs11: URI then ENG is 15 | the default type. 16 | 17 | If this option is used several times, the last one will be used. 18 | -------------------------------------------------------------------------------- /docs/cmdline-opts/parallel-immediate.d: -------------------------------------------------------------------------------- 1 | Long: parallel-immediate 2 | Help: Do not wait for multiplexing (with --parallel) 3 | Added: 7.68.0 4 | See-also: parallel parallel-max 5 | Category: connection curl 6 | Example: --parallel-immediate -Z $URL -o file1 $URL -o file2 7 | --- 8 | When doing parallel transfers, this option will instruct curl that it should 9 | rather prefer opening up more connections in parallel at once rather than 10 | waiting to see if new transfers can be added as multiplexed streams on another 11 | connection. 12 | 13 | This option is global and does not need to be specified for each use of 14 | --next. 15 | -------------------------------------------------------------------------------- /tests/data/test1281: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | URL 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | none 19 | 20 | 21 | http 22 | 23 | 24 | reject non-numerical port number in URL 25 | 26 | 27 | http://%HOSTIP:alpha/beta/%TESTNUMBER 28 | 29 | 30 | 31 | # Verify data after the test has been "shot" 32 | 33 | # 3 == CURLE_URL_MALFORMAT 34 | 35 | 3 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test604: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | sftp 14 | 15 | 16 | SFTP retrieval of nonexistent file 17 | 18 | 19 | --key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/not-a-valid-file-moooo --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | disable 28 | 29 | 30 | 78 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test606: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | sftp 14 | 15 | 16 | SFTP invalid user login 17 | 18 | 19 | --key curl_client_key --pubkey curl_client_key.pub -u not-a-valid-user: sftp://%HOSTIP:%SSHPORT%SSH_PWD/not-a-valid-file-moooo --insecure 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | 67 28 | 29 | 30 | disable 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/cmdline-opts/proxytunnel.d: -------------------------------------------------------------------------------- 1 | Long: proxytunnel 2 | Short: p 3 | Help: Operate through an HTTP proxy tunnel (using CONNECT) 4 | See-also: proxy 5 | Category: proxy 6 | Example: --proxytunnel -x http://proxy $URL 7 | Added: 7.3 8 | --- 9 | When an HTTP proxy is used --proxy, this option will make curl tunnel through 10 | the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and 11 | requires that the proxy allows direct connect to the remote port number curl 12 | wants to tunnel through to. 13 | 14 | To suppress proxy CONNECT response headers when curl is set to output headers 15 | use --suppress-connect-headers. 16 | -------------------------------------------------------------------------------- /tests/data/test1592: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | multi 6 | resolve 7 | speedcheck 8 | 9 | 10 | 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | lib%TESTNUMBER 18 | 19 | 20 | HTTP request, remove handle while resolving, don't block 21 | 22 | 23 | 24 | http://a-site-never-accessed.example.org/%TESTNUMBER 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | disable 32 | 33 | 34 | 0 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test219: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | proxy 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | http 21 | proxy 22 | 23 | 24 | try using proxy with unsupported scheme 25 | 26 | 27 | -x foo://%HOSTIP:%NOLISTENPORT/%TESTNUMBER http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER 28 | 29 | 30 | 31 | # 32 | # Verify after the test has been "shot" 33 | 34 | 35 | 7 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/cmdline-opts/post301.d: -------------------------------------------------------------------------------- 1 | Long: post301 2 | Help: Do not switch to GET after following a 301 3 | Protocols: HTTP 4 | See-also: post302 post303 location 5 | Added: 7.17.1 6 | Category: http post 7 | Example: --post301 --location -d "data" $URL 8 | --- 9 | Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET 10 | requests when following a 301 redirection. The non-RFC behavior is ubiquitous 11 | in web browsers, so curl does the conversion by default to maintain 12 | consistency. However, a server may require a POST to remain a POST after such 13 | a redirection. This option is meaningful only when using --location. 14 | -------------------------------------------------------------------------------- /docs/cmdline-opts/post302.d: -------------------------------------------------------------------------------- 1 | Long: post302 2 | Help: Do not switch to GET after following a 302 3 | Protocols: HTTP 4 | See-also: post301 post303 location 5 | Added: 7.19.1 6 | Category: http post 7 | Example: --post302 --location -d "data" $URL 8 | --- 9 | Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET 10 | requests when following a 302 redirection. The non-RFC behavior is ubiquitous 11 | in web browsers, so curl does the conversion by default to maintain 12 | consistency. However, a server may require a POST to remain a POST after such 13 | a redirection. This option is meaningful only when using --location. 14 | -------------------------------------------------------------------------------- /tests/data/test1023: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl-config 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | Compare curl --version with curl-config --vernum 21 | 22 | 23 | --version 24 | 25 | 26 | %SRCDIR/libtest/test1022.pl ../curl-config log/stdout%TESTNUMBER vernum 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 0 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test1454: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --connect-to 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | !ipv6 18 | 19 | 20 | http 21 | 22 | 23 | --connect-to with IPv6 address w/o IPv6 support! 24 | 25 | 26 | --connect-to localhost:80:[::1]:80 localhost 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | # 4 == CURLE_NOT_BUILT_IN 34 | 35 | 4 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test859: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | Clear Text 6 | STAT 7 | CUSTOMREQUEST 8 | 9 | 10 | 11 | # 12 | # Server-side 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | pop3 21 | 22 | 23 | POP3 STAT (CUSTOMREQUEST) 24 | 25 | 26 | pop3://%HOSTIP:%POP3PORT -u user:secret -X STAT -I 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | CAPA 35 | USER user 36 | PASS secret 37 | STAT 38 | QUIT 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test860: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | Clear Text 6 | NOOP 7 | CUSTOMREQUEST 8 | 9 | 10 | 11 | # 12 | # Server-side 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | pop3 21 | 22 | 23 | POP3 NOOP (CUSTOMREQUEST) 24 | 25 | 26 | pop3://%HOSTIP:%POP3PORT -u user:secret -X NOOP -I 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | CAPA 35 | USER user 36 | PASS secret 37 | NOOP 38 | QUIT 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test863: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | Clear Text 6 | RSET 7 | CUSTOMREQUEST 8 | 9 | 10 | 11 | # 12 | # Server-side 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | pop3 21 | 22 | 23 | POP3 RSET (CUSTOMREQUEST) 24 | 25 | 26 | pop3://%HOSTIP:%POP3PORT -u user:secret -X RSET -I 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | CAPA 35 | USER user 36 | PASS secret 37 | RSET 38 | QUIT 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/cmdline-opts/create-file-mode.d: -------------------------------------------------------------------------------- 1 | Long: create-file-mode 2 | Arg: 3 | Help: File mode for created files 4 | Protocols: SFTP SCP FILE 5 | Category: sftp scp file upload 6 | See-also: ftp-create-dirs 7 | Added: 7.75.0 8 | Example: --create-file-mode 0777 -T localfile sftp://example.com/new 9 | --- 10 | When curl is used to create files remotely using one of the supported 11 | protocols, this option allows the user to set which 'mode' to set on the file 12 | at creation time, instead of the default 0644. 13 | 14 | This option takes an octal number as argument. 15 | 16 | If this option is used several times, the last one will be used. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ignore-content-length.d: -------------------------------------------------------------------------------- 1 | Long: ignore-content-length 2 | Help: Ignore the size of the remote resource 3 | Protocols: FTP HTTP 4 | Category: http ftp 5 | Example: --ignore-content-length $URL 6 | Added: 7.14.1 7 | See-also: ftp-skip-pasv-ip 8 | --- 9 | For HTTP, Ignore the Content-Length header. This is particularly useful for 10 | servers running Apache 1.x, which will report incorrect Content-Length for 11 | files larger than 2 gigabytes. 12 | 13 | For FTP (since 7.46.0), skip the RETR command to figure out the size before 14 | downloading a file. 15 | 16 | This option does not work for HTTP if libcurl was built to use hyper. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/socks5-gssapi-service.d: -------------------------------------------------------------------------------- 1 | Long: socks5-gssapi-service 2 | Arg: 3 | Help: SOCKS5 proxy service name for GSS-API 4 | Added: 7.19.4 5 | Category: proxy auth 6 | Example: --socks5-gssapi-service sockd --socks5 hostname:4096 $URL 7 | See-also: socks5 8 | --- 9 | The default service name for a socks server is rcmd/server-fqdn. This option 10 | allows you to change it. 11 | 12 | Examples: --socks5 proxy-name --socks5-gssapi-service sockd would use 13 | sockd/proxy-name --socks5 proxy-name --socks5-gssapi-service sockd/real-name 14 | would use sockd/real-name for cases where the proxy-name does not match the 15 | principal name. 16 | -------------------------------------------------------------------------------- /tests/data/test1014: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl-config 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | Compare curl --version with curl-config --features 21 | 22 | 23 | --version 24 | 25 | 26 | %SRCDIR/libtest/test1013.pl ../curl-config log/stdout%TESTNUMBER features 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 0 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test1200: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GOPHER 5 | INDEX 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | iMenu results error.host 1 14 | 0Selector /bar bar.foo.invalid 70 15 | . 16 | 17 | 18 | 19 | # Client-side 20 | 21 | 22 | gopher 23 | 24 | 25 | Gopher index 26 | 27 | 28 | gopher://%HOSTIP:%GOPHERPORT/1/%TESTNUMBER 29 | 30 | 31 | 32 | # 33 | # Verify data after the test has been "shot" 34 | 35 | 36 | /%TESTNUMBER 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tests/data/test1447: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP proxy 5 | FAILURE 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | http 21 | proxy 22 | 23 | 24 | Provide illegal proxy name 25 | 26 | 27 | --proxy "http://a:b@/x" http://%HOSTIP:%NOLISTENPORT 28 | 29 | 30 | 31 | # 32 | # Verify data after the test has been "shot" 33 | 34 | # Couldn't resolve proxy name 35 | 36 | 5 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tests/data/test1022: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl-config 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | Compare curl --version with curl-config --version 21 | 22 | 23 | --version 24 | 25 | 26 | %SRCDIR/libtest/test%TESTNUMBER.pl ../curl-config log/stdout%TESTNUMBER version 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 0 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test113: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FAILURE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | REPLY USER 314 bluah you fewl! 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | ftp 19 | 20 | 21 | FTP download, failed login: USER not valid 22 | 23 | 24 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 67 32 | 33 | 34 | USER anonymous 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test200: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | 6 | 7 | 8 | 9 | 10 | foo 11 | bar 12 | bar 13 | foo 14 | moo 15 | 16 | 17 | 18 | # Client-side 19 | 20 | 21 | file 22 | 23 | 24 | basic file:// file 25 | 26 | 27 | file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 28 | 29 | 30 | foo 31 | bar 32 | bar 33 | foo 34 | moo 35 | 36 | 37 | 38 | # Verify data after the test has been "shot" 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test1013: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | curl-config 5 | 6 | 7 | 8 | # 9 | # Server-side 10 | 11 | 12 | 13 | # 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | Compare curl --version with curl-config --protocols 21 | 22 | 23 | --version 24 | 25 | 26 | %SRCDIR/libtest/test%TESTNUMBER.pl ../curl-config log/stdout%TESTNUMBER protocols 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | 0 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tests/data/test656: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | 7 | 8 | 9 | # 10 | # Client-side 11 | 12 | 13 | sftp 14 | 15 | 16 | SFTP retrieval with nonexistent private key file 17 | 18 | 19 | --key DOES_NOT_EXIST --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/not-a-valid-file-moooo --insecure --connect-timeout 8 20 | 21 | 22 | 23 | # 24 | # Verify data after the test has been "shot" 25 | 26 | 27 | disable 28 | 29 | 30 | 67 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docs/cmdline-opts/no-sessionid.d: -------------------------------------------------------------------------------- 1 | Long: no-sessionid 2 | Help: Disable SSL session-ID reusing 3 | Protocols: TLS 4 | Added: 7.16.0 5 | Category: tls 6 | Example: --no-sessionid $URL 7 | See-also: insecure 8 | --- 9 | Disable curl's use of SSL session-ID caching. By default all transfers are 10 | done using the cache. Note that while nothing should ever get hurt by 11 | attempting to reuse SSL session-IDs, there seem to be broken SSL 12 | implementations in the wild that may require you to disable this in order for 13 | you to succeed. 14 | 15 | Note that this is the negated option name documented. You can thus use 16 | --sessionid to enforce session-ID caching. 17 | -------------------------------------------------------------------------------- /docs/cmdline-opts/trace.d: -------------------------------------------------------------------------------- 1 | Long: trace 2 | Arg: 3 | Help: Write a debug trace to FILE 4 | Mutexed: verbose trace-ascii 5 | Category: verbose 6 | Example: --trace log.txt $URL 7 | Added: 7.9.7 8 | See-also: trace-ascii trace-time 9 | --- 10 | Enables a full trace dump of all incoming and outgoing data, including 11 | descriptive information, to the given output file. Use "-" as filename to have 12 | the output sent to stdout. Use "%" as filename to have the output sent to 13 | stderr. 14 | 15 | This option is global and does not need to be specified for each use of 16 | --next. 17 | 18 | If this option is used several times, the last one will be used. 19 | -------------------------------------------------------------------------------- /tests/data/test632: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | server key check 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | none 15 | 16 | 17 | sftp 18 | 19 | 20 | SFTP syntactically invalid host key 21 | 22 | 23 | --hostpubmd5 00 --key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%NOLISTENPORT%SSH_PWD/log/irrelevant-file --insecure 24 | 25 | 26 | 27 | # 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 2 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test1169: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | runtests.pl 5 | 6 | 7 | 8 | # 9 | # Client-side 10 | 11 | 12 | none 13 | 14 | 15 | Verify that runtests.pl accepts an -L option 16 | 17 | 18 | 19 | %SRCDIR/runtests.pl -L %SRCDIR/log/test1196-library.pl 20 | 21 | # Create a simple perl snippet that lets runtests.pl 22 | # exit with a code we can check. 23 | 24 | echo 'exit 123' > %SRCDIR/log/test1196-library.pl 25 | 26 | 27 | 28 | 29 | 30 | 31 | 123 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /tests/data/test1236: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | globbing 5 | FAILURE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | 18 | [] globbing overflowing the range counter 19 | 20 | # 2^62 == 4611686018427387904 21 | 22 | "%HOSTIP:%NOLISTENPORT/1234[0-1]{" "%HOSTIP:%NOLISTENPORT/[1-4611686018427387904][1-4611686018427387904]" 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | # 3 == CURLE_URL_MALFORMAT 29 | 30 | 3 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/data/test1247: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | --fail-early 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | http 21 | 22 | 23 | --fail-early 24 | 25 | 26 | --fail-early h1234://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | # Protocol "h1234" not supported or disabled in libcurl 34 | 35 | 1 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test2071: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | 6 | 7 | 8 | 9 | 10 | foo 11 | bar 12 | bar 13 | foo 14 | moo 15 | 16 | 17 | 18 | # Client-side 19 | 20 | 21 | file 22 | 23 | 24 | basic file:// file with "127.0.0.1" hostname 25 | 26 | 27 | file://127.0.0.1%FILE_PWD/log/test2070.txt 28 | 29 | 30 | foo 31 | bar 32 | bar 33 | foo 34 | moo 35 | 36 | 37 | 38 | # Verify data after the test has been "shot" 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test677: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IMAP 5 | CONNECT_ONLY 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | imap 21 | 22 | 23 | IMAP with CONNECT_ONLY, custom command then exit 24 | 25 | 26 | lib%TESTNUMBER 27 | 28 | 29 | 30 | imap://%HOSTIP:%IMAPPORT/677 31 | 32 | 33 | 34 | 35 | # 36 | # Verify data after the test has been "shot" 37 | 38 | 39 | A001 CAPABILITY 40 | A1 IDLE 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | How to contribute to curl 2 | ========================= 3 | 4 | Join the community 5 | ------------------ 6 | 7 | 1. Click 'watch' on the GitHub repo 8 | 9 | 2. Subscribe to the suitable [mailing lists](https://curl.se/mail/) 10 | 11 | Read [CONTRIBUTE](../docs/CONTRIBUTE.md) 12 | --------------------------------------- 13 | 14 | Send your suggestions using one of these methods: 15 | ------------------------------------------------- 16 | 17 | 1. in a mail to the mailing list 18 | 19 | 2. as a [pull request](https://github.com/curl/curl/pulls) 20 | 21 | 3. as an [issue](https://github.com/curl/curl/issues) 22 | 23 | / The curl team! 24 | -------------------------------------------------------------------------------- /tests/data/test1000: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | PASV 6 | LIST 7 | NOBODY 8 | 9 | 10 | # 11 | # Server-side 12 | 13 | 14 | 15 | 16 | 17 | # 18 | # Client-side 19 | 20 | 21 | ftp 22 | 23 | 24 | FTP dir list PASV with -I 25 | 26 | 27 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/ -I 28 | 29 | 30 | 31 | # 32 | # Verify data after the test has been "shot" 33 | 34 | 35 | USER anonymous 36 | PASS ftp@example.com 37 | PWD 38 | CWD %TESTNUMBER 39 | QUIT 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /tests/data/test1449: -------------------------------------------------------------------------------- 1 | 2 | # initially based on test110 3 | 4 | 5 | FTP 6 | PASV 7 | RETR 8 | Resume 9 | 10 | 11 | # Server-side 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | ftp 19 | 20 | 21 | FTP download range with integer overflow 22 | 23 | 24 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -r 36893488147419103232- 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | USER anonymous 32 | PASS ftp@example.com 33 | PWD 34 | EPSV 35 | QUIT 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test114: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FAILURE 6 | 7 | 8 | # Server-side 9 | 10 | 11 | REPLY PASS 314 bluah you f00l! 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | ftp 19 | 20 | 21 | FTP download, failed login: PASS not valid 22 | 23 | 24 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 67 32 | 33 | 34 | USER anonymous 35 | PASS ftp@example.com 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test631: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SCP 5 | FAILURE 6 | server key check 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | scp 15 | 16 | 17 | SCP incorrect host key 18 | 19 | 20 | --hostpubmd5 00000000000000000000000000000000 --key curl_client_key --pubkey curl_client_key.pub -u %USER: scp://%HOSTIP:%SSHPORT%SSH_PWD/log/irrelevant-file --insecure 21 | 22 | 23 | 24 | # 25 | # Verify data after the test has been "shot" 26 | 27 | 28 | 60 29 | 30 | 31 | disable 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test858: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | POP3 5 | Clear Text 6 | DELE 7 | CUSTOMREQUEST 8 | 9 | 10 | 11 | # 12 | # Server-side 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | pop3 21 | 22 | 23 | POP3 DELE message (CUSTOMREQUEST) 24 | 25 | 26 | pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret -X DELE -I 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | 34 | CAPA 35 | USER user 36 | PASS secret 37 | DELE %TESTNUMBER 38 | QUIT 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test283: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TFTP 5 | TFTP RRQ 6 | FAILURE 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | tftp 15 | 16 | 17 | TFTP retrieve on invalid file 18 | 19 | 20 | tftp://%HOSTIP:%TFTPPORT//invalid-file --tftp-blksize 1024 21 | 22 | 23 | 24 | # 25 | # Verify pseudo protocol after the test has been "shot" 26 | 27 | 28 | 69 29 | 30 | 31 | opcode = 1 32 | mode = octet 33 | tsize = 0 34 | blksize = 1024 35 | timeout = 6 36 | filename = /invalid-file 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tests/data/test509: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | memory callbacks 5 | 6 | 7 | # 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | 18 | http 19 | 20 | # tool is what to use instead of 'curl' 21 | 22 | lib%TESTNUMBER 23 | 24 | 25 | 26 | initialization with memory callbacks and actual usage 27 | 28 | 29 | nothing 30 | 31 | 32 | 33 | # 34 | # Verify data after the test has been "shot" 35 | 36 | 37 | Callbacks were invoked! 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test630: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SFTP 5 | FAILURE 6 | server key check 7 | 8 | 9 | 10 | # 11 | # Client-side 12 | 13 | 14 | sftp 15 | 16 | 17 | SFTP incorrect host key 18 | 19 | 20 | --hostpubmd5 00000000000000000000000000000000 --key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%SSH_PWD/log/irrelevant-file --insecure 21 | 22 | 23 | 24 | # 25 | # Verify data after the test has been "shot" 26 | 27 | 28 | 60 29 | 30 | 31 | disable 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/data/test925: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | VRFY 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 252 Send some mail and I'll try my best 14 | 15 | 16 | 17 | # 18 | # Client-side 19 | 20 | 21 | smtp 22 | 23 | 24 | SMTP external VRFY 25 | 26 | 27 | smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@example.net 28 | 29 | 30 | 31 | # 32 | # Verify data after the test has been "shot" 33 | 34 | 35 | EHLO %TESTNUMBER 36 | VRFY user@example.net 37 | QUIT 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /docs/cmdline-opts/ssl-auto-client-cert.d: -------------------------------------------------------------------------------- 1 | Long: ssl-auto-client-cert 2 | Help: Use auto client certificate (Schannel) 3 | Added: 7.77.0 4 | See-also: proxy-ssl-auto-client-cert 5 | Category: tls 6 | Example: --ssl-auto-client-cert $URL 7 | --- 8 | Tell libcurl to automatically locate and use a client certificate for 9 | authentication, when requested by the server. This option is only supported 10 | for Schannel (the native Windows SSL library). Prior to 7.77.0 this was the 11 | default behavior in libcurl with Schannel. Since the server can request any 12 | certificate that supports client authentication in the OS certificate store it 13 | could be a privacy violation and unexpected. 14 | -------------------------------------------------------------------------------- /tests/data/test1084: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | --interface 7 | FAILURE 8 | non-existing host 9 | 10 | 11 | 12 | # 13 | # Server-side 14 | 15 | 16 | 17 | # 18 | # Client-side 19 | 20 | 21 | http 22 | 23 | 24 | none 25 | 26 | 27 | HTTP GET with invalid --interface 28 | 29 | 30 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER --interface non-existing-host.haxx.se. 31 | 32 | 33 | 34 | # 35 | # Verify data after the test has been "shot" 36 | 37 | 38 | 45 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/data/test136: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | EPSV 6 | RETR 7 | 8 | 9 | # Server-side 10 | 11 | 12 | 0123456789abcdef 13 | 14 | 15 | 16 | # Client-side 17 | 18 | 19 | ftp 20 | 21 | 22 | FTP with user and no password 23 | 24 | 25 | -u user: ftp://%HOSTIP:%FTPPORT/%TESTNUMBER 26 | 27 | 28 | 29 | # Verify data after the test has been "shot" 30 | 31 | 32 | USER user 33 | PASS 34 | PWD 35 | EPSV 36 | TYPE I 37 | SIZE %TESTNUMBER 38 | RETR %TESTNUMBER 39 | QUIT 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /tests/data/test231: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | 6 | 7 | 8 | # Server-side 9 | 10 | # 16 bytes to check 11 | 12 | B01234567 13 | C01234567 14 | 15 | 16 | 17 | # Client-side 18 | 19 | 20 | file 21 | 22 | 23 | file:// with resume 24 | 25 | 26 | file://localhost%FILE_PWD/log/test%TESTNUMBER.txt -C 10 27 | 28 | 29 | A01234567 30 | B01234567 31 | C01234567 32 | 33 | 34 | 35 | # Verify data after the test has been "shot" 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test405: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | FTPS 6 | FAILURE 7 | 8 | 9 | 10 | # Client-side 11 | 12 | 13 | SSL 14 | 15 | 16 | ftp 17 | 18 | 19 | FTPS operation to FTP port 20 | 21 | 22 | -m 5 -k ftps://%HOSTIP:%FTPPORT/path/to/file/%TESTNUMBER 23 | 24 | 25 | 26 | # Verify data after the test has been "shot" 27 | 28 | # error code 35 is CURLE_SSL_CONNECT_ERROR 29 | # GnuTLS seems to not fail on its handshake but instead times out which gives 30 | # error 28 31 | 32 | 35,28 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /tests/data/test501: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | missing URL 5 | 6 | 7 | # 8 | # Server-side 9 | 10 | 11 | 12 | # Client-side 13 | 14 | 15 | none 16 | 17 | 18 | http 19 | 20 | # tool is what to use instead of 'curl' 21 | 22 | lib%TESTNUMBER 23 | 24 | 25 | 26 | simple libcurl attempt operation without URL set 27 | 28 | 29 | http://%HOSTIP:%NOLISTENPORT/%TESTNUMBER 30 | 31 | 32 | 33 | # 34 | # Verify data after the test has been "shot" 35 | 36 | 37 | 3 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /tests/data/test896: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IMAP 5 | Clear Text 6 | FETCH 7 | --login-options 8 | 9 | 10 | 11 | # 12 | # Server-side 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | imap 21 | 22 | 23 | IMAP with --login-options 'AUTH=dummy' (failing) 24 | 25 | 26 | 'imap://%HOSTIP:%IMAPPORT/895/;MAILINDEX=1' -u '"user:sec"ret{' --login-options 'AUTH=dummy' 27 | 28 | 29 | 30 | # 31 | # Verify data after the test has been "shot" 32 | 33 | # 3 == CURLE_URL_MALFORMAT 34 | 35 | 3 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /docs/cmdline-opts/cert-status.d: -------------------------------------------------------------------------------- 1 | Long: cert-status 2 | Protocols: TLS 3 | Added: 7.41.0 4 | Help: Verify the status of the server cert via OCSP-staple 5 | Category: tls 6 | See-also: pinnedpubkey 7 | Example: --cert-status $URL 8 | --- 9 | Tells curl to verify the status of the server certificate by using the 10 | Certificate Status Request (aka. OCSP stapling) TLS extension. 11 | 12 | If this option is enabled and the server sends an invalid (e.g. expired) 13 | response, if the response suggests that the server certificate has been revoked, 14 | or no response at all is received, the verification fails. 15 | 16 | This is currently only implemented in the OpenSSL, GnuTLS and NSS backends. 17 | -------------------------------------------------------------------------------- /tests/data/test1452: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TELNET 5 | UPLOAD 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 14 | 15 | 16 | # 17 | # Client-side 18 | 19 | 20 | telnet 21 | 22 | 23 | telnet 24 | 25 | 26 | Basic TELNET negotiation 27 | 28 | 29 | test%TESTNUMBER 30 | 31 | 32 | telnet://%HOSTIP:%TELNETPORT --upload-file - 33 | 34 | 35 | 36 | # 37 | # Verify data after the test has been "shot" 38 | 39 | 40 | test%TESTNUMBER 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tests/data/test704: -------------------------------------------------------------------------------- 1 | 2 | #based off 19 3 | 4 | 5 | HTTP 6 | SOCKS4 7 | connect to non-listen 8 | FAILURE 9 | 10 | 11 | # Server-side 12 | 13 | 14 | 15 | 16 | 17 | # Client-side 18 | 19 | 20 | http 21 | 22 | 23 | Attempt connect to non-listening SOCKS4 proxy 24 | 25 | 26 | --socks4 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER 27 | 28 | 29 | proxy 30 | 31 | 32 | 33 | # Verify data after the test has been "shot" 34 | 35 | 36 | 7 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tests/data/test705: -------------------------------------------------------------------------------- 1 | 2 | #based off 19 3 | 4 | 5 | HTTP 6 | SOCKS5 7 | connect to non-listen 8 | FAILURE 9 | 10 | 11 | # Server-side 12 | 13 | 14 | 15 | 16 | 17 | # Client-side 18 | 19 | 20 | http 21 | 22 | 23 | Attempt connect to non-listening SOCKS5 proxy 24 | 25 | 26 | --socks5 %HOSTIP:%NOLISTENPORT http://%HOSTIP:%HTTPPORT/%TESTNUMBER 27 | 28 | 29 | proxy 30 | 31 | 32 | 33 | # Verify data after the test has been "shot" 34 | 35 | 36 | 7 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /docs/cmdline-opts/sasl-authzid.d: -------------------------------------------------------------------------------- 1 | Long: sasl-authzid 2 | Arg: 3 | Help: Identity for SASL PLAIN authentication 4 | Added: 7.66.0 5 | Category: auth 6 | Example: --sasl-authzid zid imap://example.com/ 7 | See-also: login-options 8 | --- 9 | Use this authorization identity (authzid), during SASL PLAIN authentication, 10 | in addition to the authentication identity (authcid) as specified by --user. 11 | 12 | If the option is not specified, the server will derive the authzid from the 13 | authcid, but if specified, and depending on the server implementation, it may 14 | be used to access another user's inbox, that the user has been granted access 15 | to, or a shared mailbox for example. 16 | -------------------------------------------------------------------------------- /tests/data/test1018: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | Range 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | # Client-side 15 | 16 | 17 | none 18 | 19 | 20 | file 21 | 22 | 23 | X-X range on a file:// URL to stdout 24 | 25 | 26 | -r 4-4 file://localhost%FILE_PWD/log/test%TESTNUMBER.txt 27 | 28 | 29 | 1234567890 30 | 31 | 32 | 33 | # Verify data after the test has been "shot" 34 | 35 | 36 | 5 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /tests/data/test1565: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTTP 5 | HTTP GET 6 | multi 7 | multi-threaded 8 | wakeup 9 | 10 | 11 | 12 | # Server-side 13 | 14 | 15 | HTTP/1.1 200 OK 16 | Content-Length: 3 17 | 18 | OK 19 | 20 | 21 | 22 | # Client-side 23 | 24 | 25 | wakeup 26 | 27 | 28 | http 29 | 30 | 31 | lib%TESTNUMBER 32 | 33 | 34 | wakeup from another thread 35 | 36 | 37 | http://%HOSTIP:%HTTPPORT/1 38 | 39 | 40 | 41 | # Verify data after the test has been "shot" 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /tests/data/test195: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FTP 5 | 6 | 7 | 8 | # Server-side 9 | 10 | 11 | REPLY PASS 530 temporarily not available 12 | 13 | 14 | 15 | # Client-side 16 | 17 | 18 | ftp 19 | 20 | 21 | FTP response 530 after PASS, temporarily not allowed access 22 | 23 | 24 | ftp://%HOSTIP:%FTPPORT/%TESTNUMBER 25 | 26 | 27 | 28 | # Verify data after the test has been "shot" 29 | 30 | 31 | 67 32 | 33 | 34 | USER anonymous 35 | PASS ftp@example.com 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test205: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FILE 5 | FAILURE 6 | 7 | 8 | 9 | # no Server-side 10 | 11 | # Client-side 12 | 13 | 14 | file 15 | 16 | 17 | "upload" with file:// 18 | 19 | 20 | file://localhost/%PWD/log/nonexisting/result%TESTNUMBER.txt -T log/upload%TESTNUMBER.txt 21 | 22 | 23 | data 24 | in 25 | file 26 | to 27 | write 28 | 29 | 30 | 31 | # Verify data after the test has been "shot" 32 | 33 | # 23 => CURLE_WRITE_ERROR 34 | 35 | 23 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tests/data/test928: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SMTP 5 | HELP 6 | 7 | 8 | 9 | # 10 | # Server-side 11 | 12 | 13 | 214-This server supports the following commands: 14 | 214 HELO EHLO RCPT DATA RSET MAIL VRFY EXPN QUIT HELP 15 | 16 | 17 | 18 | # 19 | # Client-side 20 | 21 | 22 | smtp 23 | 24 | 25 | SMTP HELP 26 | 27 | 28 | smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER 29 | 30 | 31 | 32 | # 33 | # Verify data after the test has been "shot" 34 | 35 | 36 | EHLO %TESTNUMBER 37 | HELP 38 | QUIT 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/cmdline-opts/output-dir.d: -------------------------------------------------------------------------------- 1 | Long: output-dir 2 | Arg: 3 | Help: Directory to save files in 4 | Added: 7.73.0 5 | See-also: remote-name remote-header-name 6 | Category: curl 7 | Example: --output-dir "tmp" -O $URL 8 | --- 9 | 10 | This option specifies the directory in which files should be stored, when 11 | --remote-name or --output are used. 12 | 13 | The given output directory is used for all URLs and output options on the 14 | command line, up until the first --next. 15 | 16 | If the specified target directory does not exist, the operation will fail 17 | unless --create-dirs is also used. 18 | 19 | If this option is used multiple times, the last specified directory will be 20 | used. 21 | --------------------------------------------------------------------------------