mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 09:21:50 -05:00
content_encoding: add zstd decoding support
include zstd curl patch for Makefile.m32 from vszakats and include Add CMake support for zstd from Peter Wu Helped-by: Viktor Szakats Helped-by: Peter Wu Closes #5453
This commit is contained in:
parent
c4026a9897
commit
e13357b14b
@ -76,7 +76,7 @@ stages:
|
|||||||
configure: --enable-debug --disable-shared --disable-threaded-resolver --enable-alt-svc
|
configure: --enable-debug --disable-shared --disable-threaded-resolver --enable-alt-svc
|
||||||
tflags: -n -t --shallow=40 !FTP
|
tflags: -n -t --shallow=40 !FTP
|
||||||
steps:
|
steps:
|
||||||
- script: sudo apt-get update && sudo apt-get install -y stunnel4 python-impacket $(install)
|
- script: sudo apt-get update && sudo apt-get install -y stunnel4 python-impacket libzstd-dev libbrotli-dev $(install)
|
||||||
displayName: 'apt install'
|
displayName: 'apt install'
|
||||||
|
|
||||||
- script: ./buildconf && ./configure $(configure)
|
- script: ./buildconf && ./configure $(configure)
|
||||||
|
24
.travis.yml
24
.travis.yml
@ -94,6 +94,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=novalgrind BORINGSSL=yes C="--with-ssl=$HOME/boringssl" LD_LIBRARY_PATH=/home/travis/boringssl/lib:/usr/local/lib
|
- T=novalgrind BORINGSSL=yes C="--with-ssl=$HOME/boringssl" LD_LIBRARY_PATH=/home/travis/boringssl/lib:/usr/local/lib
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -111,6 +112,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=novalgrind NGTCP2=yes C="--with-ssl=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
|
- T=novalgrind NGTCP2=yes C="--with-ssl=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -121,6 +123,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=novalgrind NGTCP2=yes GNUTLS=yes C="PKG_CONFIG_PATH=$HOME/ngbuild --without-ssl --with-gnutls=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
|
- T=novalgrind NGTCP2=yes GNUTLS=yes C="PKG_CONFIG_PATH=$HOME/ngbuild --without-ssl --with-gnutls=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -131,6 +134,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- autogen
|
- autogen
|
||||||
- automake
|
- automake
|
||||||
- autopoint
|
- autopoint
|
||||||
@ -151,6 +155,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug-mesalink C="--with-mesalink --without-ssl"
|
- T=debug-mesalink C="--with-mesalink --without-ssl"
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -161,6 +166,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug
|
- T=debug
|
||||||
- &clang OVERRIDE_CC="CC=clang-9" OVERRIDE_CXX="CXX=clang++-9"
|
- &clang OVERRIDE_CC="CC=clang-9" OVERRIDE_CXX="CXX=clang++-9"
|
||||||
@ -172,6 +178,7 @@ jobs:
|
|||||||
- &clang_packages [*common_packages, clang-9]
|
- &clang_packages [*common_packages, clang-9]
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug C="--enable-alt-svc"
|
- T=debug C="--enable-alt-svc"
|
||||||
- *clang
|
- *clang
|
||||||
@ -183,6 +190,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug C="--with-mbedtls --without-ssl"
|
- T=debug C="--with-mbedtls --without-ssl"
|
||||||
- *clang
|
- *clang
|
||||||
@ -194,6 +202,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- libmbedtls-dev
|
- libmbedtls-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug C="--with-gnutls --without-ssl"
|
- T=debug C="--with-gnutls --without-ssl"
|
||||||
@ -207,6 +216,7 @@ jobs:
|
|||||||
- libgnutls28-dev
|
- libgnutls28-dev
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug C="--with-nss --without-ssl" NOTESTS=1 CPPFLAGS="-isystem /usr/include/nss"
|
- T=debug C="--with-nss --without-ssl" NOTESTS=1 CPPFLAGS="-isystem /usr/include/nss"
|
||||||
- *clang
|
- *clang
|
||||||
@ -219,11 +229,12 @@ jobs:
|
|||||||
- libnss3-dev
|
- libnss3-dev
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=iconv
|
- T=iconv
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
- env:
|
- env:
|
||||||
- T=cmake BORINGSSL=yes QUICHE=yes C="-DUSE_QUICHE=1 -DOPENSSL_ROOT_DIR=$HOME/boringssl"
|
- T=cmake BORINGSSL=yes QUICHE=yes C="-DUSE_QUICHE=1 -DOPENSSL_ROOT_DIR=$HOME/boringssl -DCURL_BROTLI=1 -DCURL_ZSTD=1"
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
- PKG_CONFIG_PATH="$HOME/quiche/target/release"
|
- PKG_CONFIG_PATH="$HOME/quiche/target/release"
|
||||||
before_install:
|
before_install:
|
||||||
@ -235,8 +246,9 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=cmake NGTCP2=yes C="-DUSE_NGTCP2=ON"
|
- T=cmake NGTCP2=yes C="-DUSE_NGTCP2=ON -DCURL_BROTLI=1 -DCURL_ZSTD=1"
|
||||||
- *clang
|
- *clang
|
||||||
- PKG_CONFIG_PATH="$HOME/ngbuild/lib/pkgconfig"
|
- PKG_CONFIG_PATH="$HOME/ngbuild/lib/pkgconfig"
|
||||||
compiler: clang
|
compiler: clang
|
||||||
@ -247,6 +259,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=torture
|
- T=torture
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -258,6 +271,7 @@ jobs:
|
|||||||
- lcov
|
- lcov
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- libssh2-1-dev
|
- libssh2-1-dev
|
||||||
- env:
|
- env:
|
||||||
- T=distcheck
|
- T=distcheck
|
||||||
@ -269,6 +283,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=fuzzer
|
- T=fuzzer
|
||||||
- *clang
|
- *clang
|
||||||
@ -280,6 +295,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=tidy
|
- T=tidy
|
||||||
- *clang
|
- *clang
|
||||||
@ -292,6 +308,7 @@ jobs:
|
|||||||
- clang-tidy-9
|
- clang-tidy-9
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=scan-build
|
- T=scan-build
|
||||||
- *clang
|
- *clang
|
||||||
@ -303,6 +320,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" LIBS="-ldl -lubsan"
|
- T=debug CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" LIBS="-ldl -lubsan"
|
||||||
- *clang
|
- *clang
|
||||||
@ -314,6 +332,7 @@ jobs:
|
|||||||
- *clang_packages
|
- *clang_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- env:
|
- env:
|
||||||
- T=debug C="--enable-alt-svc"
|
- T=debug C="--enable-alt-svc"
|
||||||
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
- OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
|
||||||
@ -325,6 +344,7 @@ jobs:
|
|||||||
- *common_packages
|
- *common_packages
|
||||||
- libpsl-dev
|
- libpsl-dev
|
||||||
- libbrotli-dev
|
- libbrotli-dev
|
||||||
|
- libzstd-dev
|
||||||
- libev-dev
|
- libev-dev
|
||||||
- libssl-dev
|
- libssl-dev
|
||||||
- libtool
|
- libtool
|
||||||
|
69
CMake/FindZstd.cmake
Normal file
69
CMake/FindZstd.cmake
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#***************************************************************************
|
||||||
|
# _ _ ____ _
|
||||||
|
# Project ___| | | | _ \| |
|
||||||
|
# / __| | | | |_) | |
|
||||||
|
# | (__| |_| | _ <| |___
|
||||||
|
# \___|\___/|_| \_\_____|
|
||||||
|
#
|
||||||
|
# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
#
|
||||||
|
# This software is licensed as described in the file COPYING, which
|
||||||
|
# you should have received as part of this distribution. The terms
|
||||||
|
# are also available at https://curl.haxx.se/docs/copyright.html.
|
||||||
|
#
|
||||||
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
# copies of the Software, and permit persons to whom the Software is
|
||||||
|
# furnished to do so, under the terms of the COPYING file.
|
||||||
|
#
|
||||||
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
# KIND, either express or implied.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
#[=======================================================================[.rst:
|
||||||
|
FindZstd
|
||||||
|
----------
|
||||||
|
|
||||||
|
Find the zstd library
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
``Zstd_FOUND``
|
||||||
|
System has zstd
|
||||||
|
``Zstd_INCLUDE_DIRS``
|
||||||
|
The zstd include directories.
|
||||||
|
``Zstd_LIBRARIES``
|
||||||
|
The libraries needed to use zstd
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
if(UNIX)
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
pkg_search_module(PC_Zstd libzstd)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(Zstd_INCLUDE_DIR zstd.h
|
||||||
|
HINTS
|
||||||
|
${PC_Zstd_INCLUDEDIR}
|
||||||
|
${PC_Zstd_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(Zstd_LIBRARY NAMES zstd
|
||||||
|
HINTS
|
||||||
|
${PC_Zstd_LIBDIR}
|
||||||
|
${PC_Zstd_LIBRARY_DIRS}
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Zstd
|
||||||
|
REQUIRED_VARS
|
||||||
|
Zstd_LIBRARY
|
||||||
|
Zstd_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(Zstd_FOUND)
|
||||||
|
set(Zstd_LIBRARIES ${Zstd_LIBRARY})
|
||||||
|
set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(Zstd_INCLUDE_DIRS Zstd_LIBRARIES)
|
@ -641,6 +641,22 @@ if(CURL_BROTLI)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF)
|
||||||
|
set(HAVE_ZSTD OFF)
|
||||||
|
if(CURL_ZSTD)
|
||||||
|
find_package(Zstd REQUIRED)
|
||||||
|
cmake_push_check_state()
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
|
||||||
|
check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
|
||||||
|
cmake_pop_check_state()
|
||||||
|
if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM)
|
||||||
|
set(HAVE_ZSTD ON)
|
||||||
|
list(APPEND CURL_LIBS ${Zstd_LIBRARIES})
|
||||||
|
include_directories(${Zstd_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
#libSSH2
|
#libSSH2
|
||||||
option(CMAKE_USE_LIBSSH2 "Use libSSH2" ON)
|
option(CMAKE_USE_LIBSSH2 "Use libSSH2" ON)
|
||||||
mark_as_advanced(CMAKE_USE_LIBSSH2)
|
mark_as_advanced(CMAKE_USE_LIBSSH2)
|
||||||
@ -1322,6 +1338,8 @@ _add_if("SSL" SSL_ENABLED)
|
|||||||
_add_if("IPv6" ENABLE_IPV6)
|
_add_if("IPv6" ENABLE_IPV6)
|
||||||
_add_if("unix-sockets" USE_UNIX_SOCKETS)
|
_add_if("unix-sockets" USE_UNIX_SOCKETS)
|
||||||
_add_if("libz" HAVE_LIBZ)
|
_add_if("libz" HAVE_LIBZ)
|
||||||
|
_add_if("brotli" HAVE_BROTLI)
|
||||||
|
_add_if("zstd" HAVE_ZSTD)
|
||||||
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
|
_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32)
|
||||||
_add_if("IDN" HAVE_LIBIDN2)
|
_add_if("IDN" HAVE_LIBIDN2)
|
||||||
_add_if("Largefile" (CURL_SIZEOF_CURL_OFF_T GREATER 4) AND
|
_add_if("Largefile" (CURL_SIZEOF_CURL_OFF_T GREATER 4) AND
|
||||||
|
91
configure.ac
91
configure.ac
@ -1115,6 +1115,93 @@ if test X"$OPT_BROTLI" != Xno; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Check for libzstd
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
dnl Default to compiler & linker defaults for libzstd
|
||||||
|
OPT_ZSTD=off
|
||||||
|
AC_ARG_WITH(zstd,dnl
|
||||||
|
AC_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
|
||||||
|
AC_HELP_STRING([--without-zstd], [disable libzstd]),
|
||||||
|
OPT_ZSTD=$withval)
|
||||||
|
|
||||||
|
if test X"$OPT_ZSTD" != Xno; then
|
||||||
|
dnl backup the pre-zstd variables
|
||||||
|
CLEANLDFLAGS="$LDFLAGS"
|
||||||
|
CLEANCPPFLAGS="$CPPFLAGS"
|
||||||
|
CLEANLIBS="$LIBS"
|
||||||
|
|
||||||
|
case "$OPT_ZSTD" in
|
||||||
|
yes)
|
||||||
|
dnl --with-zstd (without path) used
|
||||||
|
CURL_CHECK_PKGCONFIG(libzstd)
|
||||||
|
|
||||||
|
if test "$PKGCONFIG" != "no" ; then
|
||||||
|
LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd`
|
||||||
|
LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd`
|
||||||
|
CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd`
|
||||||
|
version=`$PKGCONFIG --modversion libzstd`
|
||||||
|
DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
off)
|
||||||
|
dnl no --with-zstd option given, just check default places
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
dnl use the given --with-zstd spot
|
||||||
|
PREFIX_ZSTD=$OPT_ZSTD
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
dnl if given with a prefix, we set -L and -I based on that
|
||||||
|
if test -n "$PREFIX_ZSTD"; then
|
||||||
|
LIB_ZSTD="-lzstd"
|
||||||
|
LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff
|
||||||
|
CPP_ZSTD=-I${PREFIX_ZSTD}/include
|
||||||
|
DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff
|
||||||
|
fi
|
||||||
|
|
||||||
|
LDFLAGS="$LDFLAGS $LD_ZSTD"
|
||||||
|
CPPFLAGS="$CPPFLAGS $CPP_ZSTD"
|
||||||
|
LIBS="$LIB_ZSTD $LIBS"
|
||||||
|
|
||||||
|
AC_CHECK_LIB(zstd, ZSTD_createDStream)
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(zstd.h,
|
||||||
|
curl_zstd_msg="enabled (libzstd)"
|
||||||
|
HAVE_ZSTD=1
|
||||||
|
AC_DEFINE(HAVE_ZSTD, 1, [if libzstd is in use])
|
||||||
|
AC_SUBST(HAVE_ZSTD, [1])
|
||||||
|
)
|
||||||
|
|
||||||
|
if test X"$OPT_ZSTD" != Xoff &&
|
||||||
|
test "$HAVE_ZSTD" != "1"; then
|
||||||
|
AC_MSG_ERROR([libzstd was not found where specified!])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$HAVE_ZSTD" = "1"; then
|
||||||
|
if test -n "$DIR_ZSTD"; then
|
||||||
|
dnl when the zstd shared lib were found in a path that the run-time
|
||||||
|
dnl linker doesn't search through, we need to add it to
|
||||||
|
dnl CURL_LIBRARY_PATH to prevent further configure tests to fail due to
|
||||||
|
dnl this
|
||||||
|
|
||||||
|
if test "x$cross_compiling" != "xyes"; then
|
||||||
|
CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD"
|
||||||
|
export CURL_LIBRARY_PATH
|
||||||
|
AC_MSG_NOTICE([Added $DIR_ZSTD to CURL_LIBRARY_PATH])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dnl no zstd, revert back to clean variables
|
||||||
|
LDFLAGS=$CLEANLDFLAGS
|
||||||
|
CPPFLAGS=$CLEANCPPFLAGS
|
||||||
|
LIBS=$CLEANLIBS
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl Check for LDAP
|
dnl Check for LDAP
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
@ -4825,6 +4912,9 @@ fi
|
|||||||
if test "x$HAVE_BROTLI" = "x1"; then
|
if test "x$HAVE_BROTLI" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES brotli"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES brotli"
|
||||||
fi
|
fi
|
||||||
|
if test "x$HAVE_ZSTD" = "x1"; then
|
||||||
|
SUPPORT_FEATURES="$SUPPORT_FEATURES zstd"
|
||||||
|
fi
|
||||||
if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
|
||||||
-o "x$USE_THREADS_WIN32" = "x1"; then
|
-o "x$USE_THREADS_WIN32" = "x1"; then
|
||||||
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
||||||
@ -5067,6 +5157,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
|
|||||||
SSH: ${curl_ssh_msg}
|
SSH: ${curl_ssh_msg}
|
||||||
zlib: ${curl_zlib_msg}
|
zlib: ${curl_zlib_msg}
|
||||||
brotli: ${curl_brotli_msg}
|
brotli: ${curl_brotli_msg}
|
||||||
|
zstd: ${curl_zstd_msg}
|
||||||
GSS-API: ${curl_gss_msg}
|
GSS-API: ${curl_gss_msg}
|
||||||
TLS-SRP: ${curl_tls_srp_msg}
|
TLS-SRP: ${curl_tls_srp_msg}
|
||||||
resolver: ${curl_res_msg}
|
resolver: ${curl_res_msg}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#
|
#
|
||||||
## Makefile for building curl examples with MingW (GCC-3.2 or later)
|
## Makefile for building curl examples with MingW (GCC-3.2 or later)
|
||||||
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
||||||
## brotli (1.0.1)
|
## brotli (1.0.1), zstd (1.4.5)
|
||||||
##
|
##
|
||||||
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
||||||
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
||||||
@ -39,6 +39,10 @@
|
|||||||
ifndef ZLIB_PATH
|
ifndef ZLIB_PATH
|
||||||
ZLIB_PATH = ../../../zlib-1.2.8
|
ZLIB_PATH = ../../../zlib-1.2.8
|
||||||
endif
|
endif
|
||||||
|
# Edit the path below to point to the base of your Zstandard sources.
|
||||||
|
ifndef ZSTD_PATH
|
||||||
|
ZSTD_PATH = ../../../zstd-1.4.5
|
||||||
|
endif
|
||||||
# Edit the path below to point to the base of your Brotli sources.
|
# Edit the path below to point to the base of your Brotli sources.
|
||||||
ifndef BROTLI_PATH
|
ifndef BROTLI_PATH
|
||||||
BROTLI_PATH = ../../../brotli-1.0.1
|
BROTLI_PATH = ../../../brotli-1.0.1
|
||||||
@ -180,6 +184,9 @@ endif
|
|||||||
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
||||||
ZLIB = 1
|
ZLIB = 1
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(findstring -zstd,$(CFG)),-zstd)
|
||||||
|
ZSTD = 1
|
||||||
|
endif
|
||||||
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
||||||
BROTLI = 1
|
BROTLI = 1
|
||||||
endif
|
endif
|
||||||
@ -284,6 +291,11 @@ ifdef ZLIB
|
|||||||
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
||||||
curl_LDADD += -L"$(ZLIB_PATH)" -lz
|
curl_LDADD += -L"$(ZLIB_PATH)" -lz
|
||||||
endif
|
endif
|
||||||
|
ifdef ZSTD
|
||||||
|
INCLUDES += -I"$(ZSTD_PATH)/include"
|
||||||
|
CFLAGS += -DHAVE_ZSTD
|
||||||
|
curl_LDADD += -L"$(ZSTD_PATH)/lib" -lzstd
|
||||||
|
endif
|
||||||
ifdef BROTLI
|
ifdef BROTLI
|
||||||
INCLUDES += -I"$(BROTLI_PATH)/include"
|
INCLUDES += -I"$(BROTLI_PATH)/include"
|
||||||
CFLAGS += -DHAVE_BROTLI
|
CFLAGS += -DHAVE_BROTLI
|
||||||
|
@ -92,6 +92,11 @@ typedef struct {
|
|||||||
be NULL */
|
be NULL */
|
||||||
const char *capath; /* the built-in default CURLOPT_CAPATH, might
|
const char *capath; /* the built-in default CURLOPT_CAPATH, might
|
||||||
be NULL */
|
be NULL */
|
||||||
|
/* when 'age' is CURLVERSION_EIGHTH or higher (>= 7.71.0), the members
|
||||||
|
below exist */
|
||||||
|
unsigned int zstd_ver_num; /* Numeric Zstd version
|
||||||
|
(MAJOR << 24) | (MINOR << 12) | PATCH */
|
||||||
|
const char *zstd_version; /* human readable string. */
|
||||||
} curl_version_info_data;
|
} curl_version_info_data;
|
||||||
.fi
|
.fi
|
||||||
|
|
||||||
@ -121,6 +126,8 @@ more exact timeouts (even on Windows) and less blocking when using the multi
|
|||||||
interface. (added in 7.10.7)
|
interface. (added in 7.10.7)
|
||||||
.IP CURL_VERSION_BROTLI
|
.IP CURL_VERSION_BROTLI
|
||||||
supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
|
supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
|
||||||
|
.IP CURL_VERSION_ZSTD
|
||||||
|
supports HTTP zstd content encoding using zstd library (Added in 7.72.0)
|
||||||
.IP CURL_VERSION_CONV
|
.IP CURL_VERSION_CONV
|
||||||
libcurl was built with support for character conversions, as provided by the
|
libcurl was built with support for character conversions, as provided by the
|
||||||
CURLOPT_CONV_* callbacks. (Added in 7.15.4)
|
CURLOPT_CONV_* callbacks. (Added in 7.15.4)
|
||||||
|
@ -45,8 +45,9 @@ Alternatively, you can specify exactly the encoding or list of encodings you
|
|||||||
want in the response. Four encodings are supported: \fIidentity\fP, meaning
|
want in the response. Four encodings are supported: \fIidentity\fP, meaning
|
||||||
non-compressed, \fIdeflate\fP which requests the server to compress its
|
non-compressed, \fIdeflate\fP which requests the server to compress its
|
||||||
response using the zlib algorithm, \fIgzip\fP which requests the gzip
|
response using the zlib algorithm, \fIgzip\fP which requests the gzip
|
||||||
algorithm and (since curl 7.57.0) \fIbr\fP which is brotli. Provide them in
|
algorithm, (since curl 7.57.0) \fIbr\fP which is brotli and (since curl
|
||||||
the string as a comma-separated list of accepted encodings, like:
|
7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a
|
||||||
|
comma-separated list of accepted encodings, like:
|
||||||
|
|
||||||
"br, gzip, deflate".
|
"br, gzip, deflate".
|
||||||
|
|
||||||
@ -94,8 +95,9 @@ if(curl) {
|
|||||||
This option was called CURLOPT_ENCODING before 7.21.6
|
This option was called CURLOPT_ENCODING before 7.21.6
|
||||||
|
|
||||||
The specific libcurl you're using must have been built with zlib to be able to
|
The specific libcurl you're using must have been built with zlib to be able to
|
||||||
decompress gzip and deflate responses and with the brotli library to
|
decompress gzip and deflate responses, with the brotli library to
|
||||||
decompress brotli responses.
|
decompress brotli responses and with the zstd library to decompress zstd
|
||||||
|
responses.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
|
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
|
||||||
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||||
|
@ -803,6 +803,7 @@ CURLU_NO_DEFAULT_PORT 7.62.0
|
|||||||
CURLU_PATH_AS_IS 7.62.0
|
CURLU_PATH_AS_IS 7.62.0
|
||||||
CURLU_URLDECODE 7.62.0
|
CURLU_URLDECODE 7.62.0
|
||||||
CURLU_URLENCODE 7.62.0
|
CURLU_URLENCODE 7.62.0
|
||||||
|
CURLVERSION_EIGHTH 7.72.0
|
||||||
CURLVERSION_FIFTH 7.57.0
|
CURLVERSION_FIFTH 7.57.0
|
||||||
CURLVERSION_FIRST 7.10
|
CURLVERSION_FIRST 7.10
|
||||||
CURLVERSION_FOURTH 7.16.1
|
CURLVERSION_FOURTH 7.16.1
|
||||||
@ -968,6 +969,7 @@ CURL_VERSION_SSL 7.10
|
|||||||
CURL_VERSION_SSPI 7.13.2
|
CURL_VERSION_SSPI 7.13.2
|
||||||
CURL_VERSION_TLSAUTH_SRP 7.21.4
|
CURL_VERSION_TLSAUTH_SRP 7.21.4
|
||||||
CURL_VERSION_UNIX_SOCKETS 7.40.0
|
CURL_VERSION_UNIX_SOCKETS 7.40.0
|
||||||
|
CURL_VERSION_ZSTD 7.72.0
|
||||||
CURL_WAIT_POLLIN 7.28.0
|
CURL_WAIT_POLLIN 7.28.0
|
||||||
CURL_WAIT_POLLOUT 7.28.0
|
CURL_WAIT_POLLOUT 7.28.0
|
||||||
CURL_WAIT_POLLPRI 7.28.0
|
CURL_WAIT_POLLPRI 7.28.0
|
||||||
|
@ -2748,6 +2748,7 @@ typedef enum {
|
|||||||
CURLVERSION_FIFTH,
|
CURLVERSION_FIFTH,
|
||||||
CURLVERSION_SIXTH,
|
CURLVERSION_SIXTH,
|
||||||
CURLVERSION_SEVENTH,
|
CURLVERSION_SEVENTH,
|
||||||
|
CURLVERSION_EIGHTH,
|
||||||
CURLVERSION_LAST /* never actually use this */
|
CURLVERSION_LAST /* never actually use this */
|
||||||
} CURLversion;
|
} CURLversion;
|
||||||
|
|
||||||
@ -2756,7 +2757,7 @@ typedef enum {
|
|||||||
meant to be a built-in version number for what kind of struct the caller
|
meant to be a built-in version number for what kind of struct the caller
|
||||||
expects. If the struct ever changes, we redefine the NOW to another enum
|
expects. If the struct ever changes, we redefine the NOW to another enum
|
||||||
from above. */
|
from above. */
|
||||||
#define CURLVERSION_NOW CURLVERSION_SEVENTH
|
#define CURLVERSION_NOW CURLVERSION_EIGHTH
|
||||||
|
|
||||||
struct curl_version_info_data {
|
struct curl_version_info_data {
|
||||||
CURLversion age; /* age of the returned struct */
|
CURLversion age; /* age of the returned struct */
|
||||||
@ -2802,6 +2803,11 @@ struct curl_version_info_data {
|
|||||||
const char *capath; /* the built-in default CURLOPT_CAPATH, might
|
const char *capath; /* the built-in default CURLOPT_CAPATH, might
|
||||||
be NULL */
|
be NULL */
|
||||||
|
|
||||||
|
/* These fields were added in CURLVERSION_EIGHTH */
|
||||||
|
unsigned int zstd_ver_num; /* Numeric Zstd version
|
||||||
|
(MAJOR << 24) | (MINOR << 12) | PATCH */
|
||||||
|
const char *zstd_version; /* human readable string. */
|
||||||
|
|
||||||
};
|
};
|
||||||
typedef struct curl_version_info_data curl_version_info_data;
|
typedef struct curl_version_info_data curl_version_info_data;
|
||||||
|
|
||||||
@ -2836,7 +2842,7 @@ typedef struct curl_version_info_data curl_version_info_data;
|
|||||||
#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */
|
#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */
|
||||||
#define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */
|
#define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */
|
||||||
#define CURL_VERSION_HTTP3 (1<<25) /* HTTP3 support built-in */
|
#define CURL_VERSION_HTTP3 (1<<25) /* HTTP3 support built-in */
|
||||||
|
#define CURL_VERSION_ZSTD (1<<26) /* zstd features are present */
|
||||||
/*
|
/*
|
||||||
* NAME curl_version_info()
|
* NAME curl_version_info()
|
||||||
*
|
*
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#
|
#
|
||||||
## Makefile for building libcurl.a with MingW (GCC-3.2 or later or LLVM/Clang)
|
## Makefile for building libcurl.a with MingW (GCC-3.2 or later or LLVM/Clang)
|
||||||
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
||||||
## brotli (1.0.1)
|
## brotli (1.0.1), zstd (1.4.5)
|
||||||
##
|
##
|
||||||
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
||||||
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
||||||
@ -39,6 +39,10 @@
|
|||||||
ifndef ZLIB_PATH
|
ifndef ZLIB_PATH
|
||||||
ZLIB_PATH = ../../zlib-1.2.8
|
ZLIB_PATH = ../../zlib-1.2.8
|
||||||
endif
|
endif
|
||||||
|
# Edit the path below to point to the base of your Zstandard sources.
|
||||||
|
ifndef ZSTD_PATH
|
||||||
|
ZSTD_PATH = ../../zstd-1.4.5
|
||||||
|
endif
|
||||||
# Edit the path below to point to the base of your Brotli sources.
|
# Edit the path below to point to the base of your Brotli sources.
|
||||||
ifndef BROTLI_PATH
|
ifndef BROTLI_PATH
|
||||||
BROTLI_PATH = ../../brotli-1.0.1
|
BROTLI_PATH = ../../brotli-1.0.1
|
||||||
@ -180,6 +184,9 @@ endif
|
|||||||
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
||||||
ZLIB = 1
|
ZLIB = 1
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(findstring -zstd,$(CFG)),-zstd)
|
||||||
|
ZSTD = 1
|
||||||
|
endif
|
||||||
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
||||||
BROTLI = 1
|
BROTLI = 1
|
||||||
endif
|
endif
|
||||||
@ -288,6 +295,11 @@ ifdef ZLIB
|
|||||||
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
||||||
DLL_LIBS += -L"$(ZLIB_PATH)" -lz
|
DLL_LIBS += -L"$(ZLIB_PATH)" -lz
|
||||||
endif
|
endif
|
||||||
|
ifdef ZSTD
|
||||||
|
INCLUDES += -I"$(ZSTD_PATH)/include"
|
||||||
|
CFLAGS += -DHAVE_ZSTD
|
||||||
|
DLL_LIBS += -L"$(ZSTD_PATH)/lib" -lzstd
|
||||||
|
endif
|
||||||
ifdef BROTLI
|
ifdef BROTLI
|
||||||
INCLUDES += -I"$(BROTLI_PATH)/include"
|
INCLUDES += -I"$(BROTLI_PATH)/include"
|
||||||
CFLAGS += -DHAVE_BROTLI
|
CFLAGS += -DHAVE_BROTLI
|
||||||
|
@ -38,6 +38,10 @@
|
|||||||
#include <brotli/decode.h>
|
#include <brotli/decode.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
#include <zstd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "sendf.h"
|
#include "sendf.h"
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
#include "content_encoding.h"
|
#include "content_encoding.h"
|
||||||
@ -710,6 +714,95 @@ static const struct content_encoding brotli_encoding = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
/* Writer parameters. */
|
||||||
|
struct zstd_params {
|
||||||
|
ZSTD_DStream *zds; /* State structure for zstd. */
|
||||||
|
void *decomp;
|
||||||
|
};
|
||||||
|
|
||||||
|
static CURLcode zstd_init_writer(struct connectdata *conn,
|
||||||
|
struct contenc_writer *writer)
|
||||||
|
{
|
||||||
|
struct zstd_params *zp = (struct zstd_params *)&writer->params;
|
||||||
|
(void)conn;
|
||||||
|
|
||||||
|
if(!writer->downstream)
|
||||||
|
return CURLE_WRITE_ERROR;
|
||||||
|
|
||||||
|
zp->zds = ZSTD_createDStream();
|
||||||
|
zp->decomp = NULL;
|
||||||
|
return zp->zds ? CURLE_OK : CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
static CURLcode zstd_unencode_write(struct connectdata *conn,
|
||||||
|
struct contenc_writer *writer,
|
||||||
|
const char *buf, size_t nbytes)
|
||||||
|
{
|
||||||
|
CURLcode result = CURLE_OK;
|
||||||
|
struct zstd_params *zp = (struct zstd_params *)&writer->params;
|
||||||
|
ZSTD_inBuffer in;
|
||||||
|
ZSTD_outBuffer out;
|
||||||
|
size_t errorCode;
|
||||||
|
|
||||||
|
if(!zp->decomp) {
|
||||||
|
zp->decomp = malloc(DSIZ);
|
||||||
|
if(!zp->decomp)
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
in.pos = 0;
|
||||||
|
in.src = buf;
|
||||||
|
in.size = nbytes;
|
||||||
|
|
||||||
|
for(;;) {
|
||||||
|
out.pos = 0;
|
||||||
|
out.dst = zp->decomp;
|
||||||
|
out.size = DSIZ;
|
||||||
|
|
||||||
|
errorCode = ZSTD_decompressStream(zp->zds, &out, &in);
|
||||||
|
if(ZSTD_isError(errorCode)) {
|
||||||
|
return CURLE_BAD_CONTENT_ENCODING;
|
||||||
|
}
|
||||||
|
if(out.pos > 0) {
|
||||||
|
result = Curl_unencode_write(conn, writer->downstream,
|
||||||
|
zp->decomp, out.pos);
|
||||||
|
if(result)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if((in.pos == nbytes) && (out.pos < out.size))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void zstd_close_writer(struct connectdata *conn,
|
||||||
|
struct contenc_writer *writer)
|
||||||
|
{
|
||||||
|
struct zstd_params *zp = (struct zstd_params *)&writer->params;
|
||||||
|
(void)conn;
|
||||||
|
|
||||||
|
if(zp->decomp) {
|
||||||
|
free(zp->decomp);
|
||||||
|
zp->decomp = NULL;
|
||||||
|
}
|
||||||
|
if(zp->zds) {
|
||||||
|
ZSTD_freeDStream(zp->zds);
|
||||||
|
zp->zds = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct content_encoding zstd_encoding = {
|
||||||
|
"zstd",
|
||||||
|
NULL,
|
||||||
|
zstd_init_writer,
|
||||||
|
zstd_unencode_write,
|
||||||
|
zstd_close_writer,
|
||||||
|
sizeof(struct zstd_params)
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Identity handler. */
|
/* Identity handler. */
|
||||||
static CURLcode identity_init_writer(struct connectdata *conn,
|
static CURLcode identity_init_writer(struct connectdata *conn,
|
||||||
struct contenc_writer *writer)
|
struct contenc_writer *writer)
|
||||||
@ -751,6 +844,9 @@ static const struct content_encoding * const encodings[] = {
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_BROTLI
|
#ifdef HAVE_BROTLI
|
||||||
&brotli_encoding,
|
&brotli_encoding,
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
&zstd_encoding,
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
@ -437,6 +437,9 @@
|
|||||||
/* if brotli is available */
|
/* if brotli is available */
|
||||||
#cmakedefine HAVE_BROTLI 1
|
#cmakedefine HAVE_BROTLI 1
|
||||||
|
|
||||||
|
/* if zstd is available */
|
||||||
|
#cmakedefine HAVE_ZSTD 1
|
||||||
|
|
||||||
/* if your compiler supports LL */
|
/* if your compiler supports LL */
|
||||||
#cmakedefine HAVE_LL 1
|
#cmakedefine HAVE_LL 1
|
||||||
|
|
||||||
|
@ -66,6 +66,10 @@
|
|||||||
#include <brotli/decode.h>
|
#include <brotli/decode.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
#include <zstd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_BROTLI
|
#ifdef HAVE_BROTLI
|
||||||
static size_t brotli_version(char *buf, size_t bufsz)
|
static size_t brotli_version(char *buf, size_t bufsz)
|
||||||
{
|
{
|
||||||
@ -78,6 +82,20 @@ static size_t brotli_version(char *buf, size_t bufsz)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
static size_t zstd_version(char *buf, size_t bufsz)
|
||||||
|
{
|
||||||
|
unsigned long zstd_version = (unsigned long)ZSTD_versionNumber();
|
||||||
|
unsigned int major = (unsigned int)(zstd_version / (100 * 100));
|
||||||
|
unsigned int minor = (unsigned int)((zstd_version -
|
||||||
|
(major * 100 * 100)) / 100);
|
||||||
|
unsigned int patch = (unsigned int)(zstd_version -
|
||||||
|
(major * 100 * 100) - (minor * 100));
|
||||||
|
|
||||||
|
return msnprintf(buf, bufsz, "%u.%u.%u", major, minor, patch);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* curl_version() returns a pointer to a static buffer.
|
* curl_version() returns a pointer to a static buffer.
|
||||||
*
|
*
|
||||||
@ -103,6 +121,9 @@ char *curl_version(void)
|
|||||||
#ifdef HAVE_BROTLI
|
#ifdef HAVE_BROTLI
|
||||||
char br_version[40] = "brotli/";
|
char br_version[40] = "brotli/";
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
char zst_version[40] = "zstd/";
|
||||||
|
#endif
|
||||||
#ifdef USE_ARES
|
#ifdef USE_ARES
|
||||||
char cares_version[40];
|
char cares_version[40];
|
||||||
#endif
|
#endif
|
||||||
@ -153,6 +174,10 @@ char *curl_version(void)
|
|||||||
brotli_version(&br_version[7], sizeof(br_version) - 7);
|
brotli_version(&br_version[7], sizeof(br_version) - 7);
|
||||||
src[i++] = br_version;
|
src[i++] = br_version;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
zstd_version(&zst_version[5], sizeof(zst_version) - 5);
|
||||||
|
src[i++] = zst_version;
|
||||||
|
#endif
|
||||||
#ifdef USE_ARES
|
#ifdef USE_ARES
|
||||||
msnprintf(cares_version, sizeof(cares_version),
|
msnprintf(cares_version, sizeof(cares_version),
|
||||||
"c-ares/%s", ares_version(NULL));
|
"c-ares/%s", ares_version(NULL));
|
||||||
@ -389,6 +414,9 @@ static curl_version_info_data version_info = {
|
|||||||
#if defined(HAVE_BROTLI)
|
#if defined(HAVE_BROTLI)
|
||||||
| CURL_VERSION_BROTLI
|
| CURL_VERSION_BROTLI
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAVE_ZSTD)
|
||||||
|
| CURL_VERSION_ZSTD
|
||||||
|
#endif
|
||||||
#if defined(USE_ALTSVC)
|
#if defined(USE_ALTSVC)
|
||||||
| CURL_VERSION_ALTSVC
|
| CURL_VERSION_ALTSVC
|
||||||
#endif
|
#endif
|
||||||
@ -413,10 +441,12 @@ static curl_version_info_data version_info = {
|
|||||||
NULL,
|
NULL,
|
||||||
#endif
|
#endif
|
||||||
#ifdef CURL_CA_PATH
|
#ifdef CURL_CA_PATH
|
||||||
CURL_CA_PATH /* capath */
|
CURL_CA_PATH, /* capath */
|
||||||
#else
|
#else
|
||||||
NULL
|
NULL,
|
||||||
#endif
|
#endif
|
||||||
|
0, /* zstd_ver_num */
|
||||||
|
NULL /* zstd version */
|
||||||
};
|
};
|
||||||
|
|
||||||
curl_version_info_data *curl_version_info(CURLversion stamp)
|
curl_version_info_data *curl_version_info(CURLversion stamp)
|
||||||
@ -434,6 +464,10 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
|
|||||||
#ifdef HAVE_BROTLI
|
#ifdef HAVE_BROTLI
|
||||||
static char brotli_buffer[80];
|
static char brotli_buffer[80];
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
static char zstd_buffer[80];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
Curl_ssl_version(ssl_buffer, sizeof(ssl_buffer));
|
Curl_ssl_version(ssl_buffer, sizeof(ssl_buffer));
|
||||||
@ -485,6 +519,12 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
|
|||||||
version_info.brotli_version = brotli_buffer;
|
version_info.brotli_version = brotli_buffer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ZSTD
|
||||||
|
version_info.zstd_ver_num = (unsigned int)ZSTD_versionNumber();
|
||||||
|
zstd_version(zstd_buffer, sizeof(zstd_buffer));
|
||||||
|
version_info.zstd_version = zstd_buffer;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_NGHTTP2
|
#ifdef USE_NGHTTP2
|
||||||
{
|
{
|
||||||
nghttp2_info *h2 = nghttp2_version(0);
|
nghttp2_info *h2 = nghttp2_version(0);
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#
|
#
|
||||||
## Makefile for building curl.exe with MingW (GCC-3.2 or later or LLVM/Clang)
|
## Makefile for building curl.exe with MingW (GCC-3.2 or later or LLVM/Clang)
|
||||||
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
|
||||||
## brotli (1.0.1)
|
## brotli (1.0.1), zstd (1.4.5)
|
||||||
##
|
##
|
||||||
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
## Usage: mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
|
||||||
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
|
||||||
@ -39,6 +39,10 @@
|
|||||||
ifndef ZLIB_PATH
|
ifndef ZLIB_PATH
|
||||||
ZLIB_PATH = ../../zlib-1.2.8
|
ZLIB_PATH = ../../zlib-1.2.8
|
||||||
endif
|
endif
|
||||||
|
# Edit the path below to point to the base of your Zstandard sources.
|
||||||
|
ifndef ZSTD_PATH
|
||||||
|
ZSTD_PATH = ../../zstd-1.4.5
|
||||||
|
endif
|
||||||
# Edit the path below to point to the base of your Brotli sources.
|
# Edit the path below to point to the base of your Brotli sources.
|
||||||
ifndef BROTLI_PATH
|
ifndef BROTLI_PATH
|
||||||
BROTLI_PATH = ../../brotli-1.0.1
|
BROTLI_PATH = ../../brotli-1.0.1
|
||||||
@ -189,6 +193,9 @@ endif
|
|||||||
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
ifeq ($(findstring -zlib,$(CFG)),-zlib)
|
||||||
ZLIB = 1
|
ZLIB = 1
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(findstring -zstd,$(CFG)),-zstd)
|
||||||
|
ZSTD = 1
|
||||||
|
endif
|
||||||
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
ifeq ($(findstring -brotli,$(CFG)),-brotli)
|
||||||
BROTLI = 1
|
BROTLI = 1
|
||||||
endif
|
endif
|
||||||
@ -302,6 +309,11 @@ ifdef ZLIB
|
|||||||
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
||||||
curl_LDADD += -L"$(ZLIB_PATH)" -lz
|
curl_LDADD += -L"$(ZLIB_PATH)" -lz
|
||||||
endif
|
endif
|
||||||
|
ifdef ZSTD
|
||||||
|
INCLUDES += -I"$(ZSTD_PATH)/include"
|
||||||
|
CFLAGS += -DHAVE_ZSTD
|
||||||
|
curl_LDADD += -L"$(ZSTD_PATH)/lib" -lzstd
|
||||||
|
endif
|
||||||
ifdef BROTLI
|
ifdef BROTLI
|
||||||
INCLUDES += -I"$(BROTLI_PATH)/include"
|
INCLUDES += -I"$(BROTLI_PATH)/include"
|
||||||
CFLAGS += -DHAVE_BROTLI
|
CFLAGS += -DHAVE_BROTLI
|
||||||
|
@ -695,7 +695,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||||||
|
|
||||||
case 'j': /* --compressed */
|
case 'j': /* --compressed */
|
||||||
if(toggle &&
|
if(toggle &&
|
||||||
!(curlinfo->features & (CURL_VERSION_LIBZ | CURL_VERSION_BROTLI)))
|
!(curlinfo->features & (CURL_VERSION_LIBZ |
|
||||||
|
CURL_VERSION_BROTLI | CURL_VERSION_ZSTD)))
|
||||||
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
return PARAM_LIBCURL_DOESNT_SUPPORT;
|
||||||
config->encoding = toggle;
|
config->encoding = toggle;
|
||||||
break;
|
break;
|
||||||
|
@ -546,6 +546,7 @@ static const struct feat feats[] = {
|
|||||||
{"SSL", CURL_VERSION_SSL},
|
{"SSL", CURL_VERSION_SSL},
|
||||||
{"libz", CURL_VERSION_LIBZ},
|
{"libz", CURL_VERSION_LIBZ},
|
||||||
{"brotli", CURL_VERSION_BROTLI},
|
{"brotli", CURL_VERSION_BROTLI},
|
||||||
|
{"zstd", CURL_VERSION_ZSTD},
|
||||||
{"CharConv", CURL_VERSION_CONV},
|
{"CharConv", CURL_VERSION_CONV},
|
||||||
{"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
|
{"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
|
||||||
{"HTTP2", CURL_VERSION_HTTP2},
|
{"HTTP2", CURL_VERSION_HTTP2},
|
||||||
|
@ -61,7 +61,7 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \
|
|||||||
test343 test344 test345 test346 \
|
test343 test344 test345 test346 \
|
||||||
test350 test351 test352 test353 test354 test355 test356 test357 test358 \
|
test350 test351 test352 test353 test354 test355 test356 test357 test358 \
|
||||||
test359 \
|
test359 \
|
||||||
test393 test394 test395 \
|
test393 test394 test395 test396 test397 \
|
||||||
\
|
\
|
||||||
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
|
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
|
||||||
test409 \
|
test409 \
|
||||||
|
202
tests/data/test396
Normal file
202
tests/data/test396
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
<testcase>
|
||||||
|
<info>
|
||||||
|
<keywords>
|
||||||
|
HTTP
|
||||||
|
HTTP GET
|
||||||
|
compressed
|
||||||
|
</keywords>
|
||||||
|
</info>
|
||||||
|
#
|
||||||
|
# Server-side
|
||||||
|
<reply>
|
||||||
|
<data base64="yes">
|
||||||
|
SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBNb24sIDI5IE5vdiAyMDA0IDIxOjU2OjUzIEdNVA0KU2Vy
|
||||||
|
dmVyOiBBcGFjaGUvMS4zLjMxIChEZWJpYW4gR05VL0xpbnV4KSBtb2RfZ3ppcC8xLjMuMjYuMWEg
|
||||||
|
UEhQLzQuMy45LTEgbW9kX3NzbC8yLjguMjAgT3BlblNTTC8wLjkuN2QgbW9kX3BlcmwvMS4yOQ0K
|
||||||
|
VmFyeTogQWNjZXB0LUVuY29kaW5nDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1J
|
||||||
|
U08tODg1OS0xDQpDb250ZW50LUVuY29kaW5nOiB6c3RkDQpDb250ZW50LUxlbmd0aDogMTMwOQ0K
|
||||||
|
DQootS/9ZLESfSgAhj+9KODQugGwA7ZypiefqCCMWuEChf2B/kAy8O+aCN/J85sQo2WYoY3AzAu3
|
||||||
|
ALMArADzIbf2pNpzu3kaHt3a+7pumz3QvrNJn6zxUdptGFLvNOy67bymt1gZRqqBqhqopndRkImC
|
||||||
|
WNNUYZLrGFaqAWoasKZHVZBrglyVCoXJljJq+kbJsKImFCan5j0IgxD2kFdKljRBHrJtWNa+0GLG
|
||||||
|
t6t0Y2+db98wD3D3dh7PwZLBVGAep877k0Ku1hbWuWeJqMgcQCAAQAgreFCQiuS6IBAYhgcBp05p
|
||||||
|
tdrvMUnUg6Da+d6eR7eMAhjTU/ubEztOjRRyTNXz9lh739eZvfb42ruTgRxSd+6LNDLIIdsbw3Lv
|
||||||
|
5/fMsM699c68G27U5mZebw1yXDCYbOvqdSvdYvxH7kWyt+7bIUcko6Vc977nhbXai24X3bccJD5K
|
||||||
|
GwNyfHyRhGUhAkIhslwYEl4UYYBweVHG8nCxZF6UOWBASIAcUUQm4UWYKCKTWXh/3XJc9+8yPCkj
|
||||||
|
3qrx30GObzo3Ht/Px1B6783X6PddJCZey7W1Se0G2a373CC/5z3vYYj1x47mHWT5WcbbjLdZy6zl
|
||||||
|
xvnGOWSOpc2psaNx88PNT/XJqk/24dwP50Jmn7K9N9thyPxYcyKnod4xvLSLm0bANB2tRs8i2Fc7
|
||||||
|
Lzdd+6x7hpGLIVVht3ZW0zCcJNIVnaFkYkhdUoRiaEkkqyKZeKQdZzmGlQmFXdToDCeUFMFubc2b
|
||||||
|
Y0iRSNZFkWDtVnuNxp003ulhCDmkv7W3aj0MIYzht0eIVkUklkWj3GYvUKypimSTfihJpKIi1kSj
|
||||||
|
ZSgQ8C4YTG3uzsvQmlgUTE6G00Num9XaHwTNadyn0VOrLWtzLSHDiISaKlfFmlDTNFXUdVGRSVUx
|
||||||
|
rDzW7411btMZMkPvigGBNbXOkL0lJ2Yb1DuGHO+s9sU82rPGd9u5XWSIZVvXuZprO1+7XXvIckqu
|
||||||
|
aUJhWEkVJVEwTdN2zWV4eVs3r9uv9uBRcIbBAesPgOiggZVzaGZABgAggEEBQELCICNKAyHz5wz5
|
||||||
|
Gr+3SMoKzoiT4JcFlMRJ8E0BVdBikl8WJGONBZ5ErsE5h2Oju5HWDnZ50LZofbucqKR8qlj/gvM2
|
||||||
|
pP8JtMX1f4XHv4sy+T9yUDCHs9YmJmw5hnGWowLZWgC0/j7rTMyJRnY3KrwRdj/wXTFmjnFucfZu
|
||||||
|
/94DmfjeEDOFz0C0f3YgYWUsI+2YO9YVXGtiM3AJTNsy5j6K9jkAKLew5bRCRJqMYqloGVw2M0JH
|
||||||
|
f4ZlSeeJaBsx6A24uIythC24JsTWGU7cNBP0NL3qbNPMIllkjj1n95If2W0cQobpYDaGF2ja1bjg
|
||||||
|
5MAexBa5GWSJY2kGTsRGwkEd3Ad5qiG3zWSmXQGb7VwHzPvskUlDyLuenXPmlGEajIyyvcZ1Dns9
|
||||||
|
S2Ru2G3YO5OHEHZNu4aZS8MuG5GPrZkBNbsTDMDQBg0rr/EM2GW5AKf9gZiRlINAzPQ5ltqgBSFC
|
||||||
|
GNOIHYGDMjg5MNphi1sImR3WcGKBiIA8sM64mdAQ0sxEb84XSBFzplx8N2jz0O5guS/GeNfaqg7r
|
||||||
|
yLrOzSoJKq2aJUadLQgFtLV6UcfzOw296pBr0/ms+rHmnTs5jnmC0eqLUKV72l4Ym3HYkknmcEsY
|
||||||
|
QP51NUQZGktcjt2485yobNJeXv/S9pzH3nguOoYl36mAbjiMjYXDkIwI+7N0JMiHzrs7y3WvSOFZ
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<datacheck>
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Mon, 29 Nov 2004 21:56:53 GMT
|
||||||
|
Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29
|
||||||
|
Vary: Accept-Encoding
|
||||||
|
Content-Type: text/html; charset=ISO-8859-1
|
||||||
|
Content-Encoding: zstd
|
||||||
|
Content-Length: 1309
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
<!DOCTYPE project-listing SYSTEM "http://freshmeat.net/backend/fm-projects-0.4.dtd">
|
||||||
|
<project-listing>
|
||||||
|
<project>
|
||||||
|
<project_id>1612</project_id>
|
||||||
|
<date_added>1998-08-21 04:01:29</date_added>
|
||||||
|
<date_updated>2004-10-18 02:22:23</date_updated>
|
||||||
|
<projectname_short>curl</projectname_short>
|
||||||
|
<projectname_full>curl and libcurl</projectname_full>
|
||||||
|
<desc_short>Command line tool and library for client-side URL transfers.</desc_short>
|
||||||
|
<desc_full>curl and libcurl is a tool for transferring files
|
||||||
|
using URL syntax. It supports HTTP, HTTPS, FTP,
|
||||||
|
FTPS, DICT, TELNET, LDAP, FILE, and GOPHER, as
|
||||||
|
well as HTTP-post, HTTP-put, cookies, FTP upload,
|
||||||
|
resumed transfers, passwords, portnumbers, SSL
|
||||||
|
certificates, Kerberos, and proxies. It is powered
|
||||||
|
by libcurl, the client-side URL transfer library.
|
||||||
|
There are bindings to libcurl for over 20
|
||||||
|
languages and environments.
|
||||||
|
</desc_full>
|
||||||
|
<vitality_score>5784.57</vitality_score>
|
||||||
|
<vitality_percent>3.16</vitality_percent>
|
||||||
|
<vitality_rank>169</vitality_rank>
|
||||||
|
<popularity_score>6594.54</popularity_score>
|
||||||
|
<popularity_percent>13.81</popularity_percent>
|
||||||
|
<popularity_rank>105</popularity_rank>
|
||||||
|
<rating>8.50</rating>
|
||||||
|
<rating_count>21</rating_count>
|
||||||
|
<rating_rank>183</rating_rank>
|
||||||
|
<subscriptions>323</subscriptions>
|
||||||
|
<branch_name>Default</branch_name>
|
||||||
|
<url_project_page>http://freshmeat.net/projects/curl/</url_project_page>
|
||||||
|
<url_homepage>http://freshmeat.net/redir/curl/1612/url_homepage/</url_homepage>
|
||||||
|
<url_tgz>http://freshmeat.net/redir/curl/1612/url_tgz/</url_tgz>
|
||||||
|
<url_bz2>http://freshmeat.net/redir/curl/1612/url_bz2/</url_bz2>
|
||||||
|
<url_zip>http://freshmeat.net/redir/curl/1612/url_zip/</url_zip>
|
||||||
|
<url_changelog>http://freshmeat.net/redir/curl/1612/url_changelog/</url_changelog>
|
||||||
|
<url_rpm>http://freshmeat.net/redir/curl/1612/url_rpm/</url_rpm>
|
||||||
|
<url_deb>http://freshmeat.net/redir/curl/1612/url_deb/</url_deb>
|
||||||
|
<url_osx>http://freshmeat.net/redir/curl/1612/url_osx/</url_osx>
|
||||||
|
<url_bsdport>http://freshmeat.net/redir/curl/1612/url_bsdport/</url_bsdport>
|
||||||
|
<url_purchase></url_purchase>
|
||||||
|
<url_cvs>http://freshmeat.net/redir/curl/1612/url_cvs/</url_cvs>
|
||||||
|
<url_list>http://freshmeat.net/redir/curl/1612/url_list/</url_list>
|
||||||
|
<url_mirror>http://freshmeat.net/redir/curl/1612/url_mirror/</url_mirror>
|
||||||
|
<url_demo></url_demo>
|
||||||
|
<license>MIT/X Consortium License</license>
|
||||||
|
<latest_release>
|
||||||
|
<latest_release_version>7.12.2</latest_release_version>
|
||||||
|
<latest_release_id>176085</latest_release_id>
|
||||||
|
<latest_release_date>2004-10-18 02:22:23</latest_release_date>
|
||||||
|
</latest_release>
|
||||||
|
<screenshot_thumb></screenshot_thumb>
|
||||||
|
<authors>
|
||||||
|
<author>
|
||||||
|
<author_name>Daniel Stenberg</author_name>
|
||||||
|
<author_url>http://freshmeat.net/~bagder/</author_url>
|
||||||
|
<author_role>Owner</author_role>
|
||||||
|
</author>
|
||||||
|
</authors>
|
||||||
|
<descriminators>
|
||||||
|
<trove_id>12</trove_id>
|
||||||
|
<trove_id>226</trove_id>
|
||||||
|
<trove_id>3</trove_id>
|
||||||
|
<trove_id>2</trove_id>
|
||||||
|
<trove_id>188</trove_id>
|
||||||
|
<trove_id>216</trove_id>
|
||||||
|
<trove_id>200</trove_id>
|
||||||
|
<trove_id>220</trove_id>
|
||||||
|
<trove_id>164</trove_id>
|
||||||
|
<trove_id>90</trove_id>
|
||||||
|
<trove_id>89</trove_id>
|
||||||
|
<trove_id>809</trove_id>
|
||||||
|
<trove_id>150</trove_id>
|
||||||
|
<trove_id>224</trove_id>
|
||||||
|
<trove_id>900</trove_id>
|
||||||
|
<trove_id>839</trove_id>
|
||||||
|
</descriminators>
|
||||||
|
<dependencies>
|
||||||
|
<dependency type="recommended">
|
||||||
|
<dependency_release_id>0</dependency_release_id>
|
||||||
|
<dependency_branch_id>7464</dependency_branch_id>
|
||||||
|
<dependency_project_id>7464</dependency_project_id>
|
||||||
|
<dependency_project_title>OpenSSL (Default)</dependency_project_title>
|
||||||
|
</dependency>
|
||||||
|
<dependency type="optional">
|
||||||
|
<dependency_release_id>0</dependency_release_id>
|
||||||
|
<dependency_branch_id>0</dependency_branch_id>
|
||||||
|
<dependency_project_id>7443</dependency_project_id>
|
||||||
|
<dependency_project_title>OpenLDAP</dependency_project_title>
|
||||||
|
</dependency>
|
||||||
|
<dependency type="optional">
|
||||||
|
<dependency_release_id>0</dependency_release_id>
|
||||||
|
<dependency_branch_id>0</dependency_branch_id>
|
||||||
|
<dependency_project_id>12351</dependency_project_id>
|
||||||
|
<dependency_project_title>zlib</dependency_project_title>
|
||||||
|
</dependency>
|
||||||
|
<dependency type="optional">
|
||||||
|
<dependency_release_id>0</dependency_release_id>
|
||||||
|
<dependency_branch_id>0</dependency_branch_id>
|
||||||
|
<dependency_project_id>32047</dependency_project_id>
|
||||||
|
<dependency_project_title>Heimdal</dependency_project_title>
|
||||||
|
</dependency>
|
||||||
|
<dependency type="optional">
|
||||||
|
<dependency_release_id>0</dependency_release_id>
|
||||||
|
<dependency_branch_id>0</dependency_branch_id>
|
||||||
|
<dependency_project_id>44532</dependency_project_id>
|
||||||
|
<dependency_project_title>c-ares</dependency_project_title>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
</project-listing>
|
||||||
|
</datacheck>
|
||||||
|
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<features>
|
||||||
|
zstd
|
||||||
|
</features>
|
||||||
|
<server>
|
||||||
|
http
|
||||||
|
</server>
|
||||||
|
<name>
|
||||||
|
HTTP GET zstd compressed content
|
||||||
|
</name>
|
||||||
|
<command>
|
||||||
|
http://%HOSTIP:%HTTPPORT/396 --compressed
|
||||||
|
</command>
|
||||||
|
</client>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<strip>
|
||||||
|
^User-Agent:.*
|
||||||
|
</strip>
|
||||||
|
<strippart>
|
||||||
|
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
|
||||||
|
</strippart>
|
||||||
|
<protocol>
|
||||||
|
GET /396 HTTP/1.1
|
||||||
|
Host: %HOSTIP:%HTTPPORT
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: xxx
|
||||||
|
|
||||||
|
</protocol>
|
||||||
|
</verify>
|
||||||
|
</testcase>
|
198
tests/data/test397
Normal file
198
tests/data/test397
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<testcase>
|
||||||
|
<info>
|
||||||
|
<keywords>
|
||||||
|
HTTP
|
||||||
|
HTTP GET
|
||||||
|
compressed
|
||||||
|
</keywords>
|
||||||
|
</info>
|
||||||
|
#
|
||||||
|
# Server-side
|
||||||
|
<reply>
|
||||||
|
# Length of not-encoded content is 16512 what is greater than default value of
|
||||||
|
# CURL_MAX_WRITE_SIZE (16384)
|
||||||
|
<data base64="yes">
|
||||||
|
SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBNb24sIDI5IE5vdiAyMDA0IDIxOjU2OjUzIEdNVA0KU2Vy
|
||||||
|
dmVyOiBBcGFjaGUvMS4zLjMxIChEZWJpYW4gR05VL0xpbnV4KSBtb2RfZ3ppcC8xLjMuMjYuMWEg
|
||||||
|
UEhQLzQuMy45LTEgbW9kX3NzbC8yLjguMjAgT3BlblNTTC8wLjkuN2QgbW9kX3BlcmwvMS4yOQ0K
|
||||||
|
VmFyeTogQWNjZXB0LUVuY29kaW5nDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1J
|
||||||
|
U08tODg1OS0xDQpDb250ZW50LUVuY29kaW5nOiB6c3RkDQpDb250ZW50LUxlbmd0aDogNDcNCg0K
|
||||||
|
KLUv/WSAPw0BAIgwMTIzNDU2Nzg5QUJDREVGCgQAfJ9geAAEGh3Sq006l4KvuZw=
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<datacheck>
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Mon, 29 Nov 2004 21:56:53 GMT
|
||||||
|
Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29
|
||||||
|
Vary: Accept-Encoding
|
||||||
|
Content-Type: text/html; charset=ISO-8859-1
|
||||||
|
Content-Encoding: zstd
|
||||||
|
Content-Length: 47
|
||||||
|
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
|
||||||
|
</datacheck>
|
||||||
|
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<features>
|
||||||
|
zstd
|
||||||
|
</features>
|
||||||
|
<server>
|
||||||
|
http
|
||||||
|
</server>
|
||||||
|
<name>
|
||||||
|
HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE
|
||||||
|
</name>
|
||||||
|
<command>
|
||||||
|
http://%HOSTIP:%HTTPPORT/397 --compressed
|
||||||
|
</command>
|
||||||
|
</client>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<strip>
|
||||||
|
^User-Agent:.*
|
||||||
|
</strip>
|
||||||
|
<strippart>
|
||||||
|
s/^Accept-Encoding: .*/Accept-Encoding: xxx/
|
||||||
|
</strippart>
|
||||||
|
<protocol>
|
||||||
|
GET /397 HTTP/1.1
|
||||||
|
Host: %HOSTIP:%HTTPPORT
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: xxx
|
||||||
|
|
||||||
|
</protocol>
|
||||||
|
</verify>
|
||||||
|
</testcase>
|
@ -240,6 +240,7 @@ my $has_ipv6; # set if libcurl is built with IPv6 support
|
|||||||
my $has_unix; # set if libcurl is built with Unix sockets support
|
my $has_unix; # set if libcurl is built with Unix sockets support
|
||||||
my $has_libz; # set if libcurl is built with libz support
|
my $has_libz; # set if libcurl is built with libz support
|
||||||
my $has_brotli; # set if libcurl is built with brotli support
|
my $has_brotli; # set if libcurl is built with brotli support
|
||||||
|
my $has_zstd; # set if libcurl is built with zstd support
|
||||||
my $has_getrlimit; # set if system has getrlimit()
|
my $has_getrlimit; # set if system has getrlimit()
|
||||||
my $has_ntlm; # set if libcurl is built with NTLM support
|
my $has_ntlm; # set if libcurl is built with NTLM support
|
||||||
my $has_ntlm_wb; # set if libcurl is built with NTLM delegation to winbind
|
my $has_ntlm_wb; # set if libcurl is built with NTLM delegation to winbind
|
||||||
@ -2831,6 +2832,7 @@ sub setupfeatures {
|
|||||||
$feature{"unix-sockets"} = $has_unix;
|
$feature{"unix-sockets"} = $has_unix;
|
||||||
$feature{"win32"} = $has_win32;
|
$feature{"win32"} = $has_win32;
|
||||||
$feature{"WinSSL"} = $has_winssl;
|
$feature{"WinSSL"} = $has_winssl;
|
||||||
|
$feature{"zstd"} = $has_zstd;
|
||||||
|
|
||||||
# make each protocol an enabled "feature"
|
# make each protocol an enabled "feature"
|
||||||
for my $p (@protocols) {
|
for my $p (@protocols) {
|
||||||
@ -3011,6 +3013,9 @@ sub checksystem {
|
|||||||
if($feat =~ /brotli/i) {
|
if($feat =~ /brotli/i) {
|
||||||
$has_brotli = 1;
|
$has_brotli = 1;
|
||||||
}
|
}
|
||||||
|
if($feat =~ /zstd/i) {
|
||||||
|
$has_zstd = 1;
|
||||||
|
}
|
||||||
if($feat =~ /NTLM/i) {
|
if($feat =~ /NTLM/i) {
|
||||||
# NTLM enabled
|
# NTLM enabled
|
||||||
$has_ntlm=1;
|
$has_ntlm=1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user