The new version of curl 7.66.0 arrives with initial support for HTTP / 3

cURL-7.66.0

cURL is a software project consisting of a library (libcurl) and a shell (curl) oriented to file transfer. It supports the protocols FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE and LDAP, among others.

cURL supports certificates HTTPS, HTTP POST, HTTP PUT, FTP uploads, Kerberos, HTTP form uploads, proxies, cookies, username and password authentication (Basic, DIgest, NTLM and Negotiate for HTTP and kerberos 4 for FTP), file transfer continuation, HTTP proxy tunneling, IMAP, POP3, LDAP, RTSP, RTMP and other benefits.

The main purpose and use for cURL is to automate file transfers or unsupervised sequences of operations. It is, for example, a valid tool to simulate the actions of users in a web browser.

Basically it is a utility to receive and send data through the network, which provides the ability to flexibly form a request by setting parameters like cookie, user_agent, referer, and any other header.

Besides that the libcurl library provides an API to use all curl functions in programs in languages ​​like C, Perl, PHP, Python.

cURL is open source, free software distributed under the MIT License.

About the new version of cURL 7.66.0

Recientemente a new version of cURL was released lwhich it reaches with the correction of 77 errors and implements several innovations among which the addition of initial support for the HTTP / 3 protocol is highlighted, which has not yet been brought to a fully functional form and is disabled by default (for example, until the connection termination handler is ready, parallelization and large request processing does not work).

In order to enable HTTP 3, rebuild with quiche or ngtcp2 backends is required + nghttp3. The use of the parameter «–http3» and the libcurl option «CURLOPT_HTTP_VERSION» is proposed;

Another important change for this new version of cURL is that added the parameters "-Z" ("–parallel") and "–parallel-max", which allows you to organize the simultaneous loading of a list of URLs into multiple sequences.

Added the ability to set a different identifier for authorization in SASL, specified by the "–sasl-authzid" parameter or the CURLOPT_SASL_AUTHZID option (the authentication identifier is passed through CURLOPT_USERPWD).

The processing of the HTTP Retry-After header and return code 429 has been implemented using the "–retry" parameter or the CURLINFO_RETRY_AFTER option.

The Retry-After header determines the delay before sending subsequent requests in the event of receiving response codes 429 (Too many requests), 503 (Service not available), or 301 (Permanently moved).

Of the other changes that stand out in this new version:

  • The curl_multi_poll () function has been added, identical to curl_multi_wait (), except when there are no file descriptors to wait (curl_multi_wait terminates immediately, and curl_multi_poll introduces a short delay before exiting to avoid spurious loading situations due to a cyclic call)
  • Starting with this release, curl will consider those HTTP responses invalid by default
  • Vulnerabilities fixed: CVE-2019-5481: double free memory lock in FTP-KRB (kerberos over FTP); CVE-2019-5482: buffer overflow in TFTP driver.
  • Fixed a regression that caused curl to not use the URL credentials correctly when performing multistage authentication (such as HTTP Digest) with a proxy.

How to install cURL on Linux?

For those who are interested in being able to install this new version of cURL They can do it by downloading the source code and compiling it.

To do this, the first thing we are going to do is download the last cURL package with the help of a terminal, in it let's type:

wget https://curl.haxx.se/download/curl-7.66.0.tar.xz

Then, we are going to unzip the downloaded package with:

tar -xzvf curl-7.66.0.tar.xz

We enter the newly created folder with:

cd curl-7.66.0

We enter as root with:

sudo su

And we type the following:

./configure --prefix=/usr \
--disable-static \
--enable-threaded-resolver \
--with-ca-path=/etc/ssl/certs &&
make
make install &&
rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&
install -v -d -m755 /usr/share/doc/curl-7.66.0 &&
cp -v -R docs/* /usr/share/doc/curl-7.66.0

Finally we can check the version with:

curl --version

Be the first to comment

Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.