1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 16:18:48 -05:00
Go to file
Tatsuhiro Tsujikawa 15cb03ad84 http2: Support trailer fields
This commit adds trailer support in HTTP/2.  In HTTP/1.1, chunked
encoding must be used to send trialer fields.  HTTP/2 deprecated any
trandfer-encoding, including chunked.  But trailer fields are now
always available.

Since trailer fields are relatively rare these days (gRPC uses them
extensively though), allocating buffer for trailer fields is done when
we detect that HEADERS frame containing trailer fields is started.  We
use Curl_add_buffer_* functions to buffer all trailers, just like we
do for regular header fields.  And then deliver them when stream is
closed.  We have to be careful here so that all data are delivered to
upper layer before sending trailers to the application.

We can deliver trailer field one by one using NGHTTP2_ERR_PAUSE
mechanism, but current method is far more simple.

Another possibility is use chunked encoding internally for HTTP/2
traffic.  I have not tested it, but it could add another overhead.

Closes #564
2015-12-15 23:47:46 +01:00
CMake CMake: Put "winsock2.h" before "windows.h" during configure checks 2015-09-23 15:18:38 +02:00
docs curl --expect100-timeout: added 2015-12-15 13:59:56 +01:00
include curlver: the pending release will become 7.47.0 2015-12-15 00:02:20 +01:00
lib http2: Support trailer fields 2015-12-15 23:47:46 +01:00
m4 curl-confopts.m4: Add missing ')' 2015-09-26 23:09:40 +02:00
packages os400: define CURL_VERSION_PSL in ILE/RPG binding 2015-12-07 10:09:33 +01:00
projects projects/Windows/.gitignore: ignore generated files for release 2015-09-03 23:34:53 +02:00
scripts scripts/makefile: add standard header 2015-12-09 00:34:39 +01:00
src curl --expect100-timeout: added 2015-12-15 13:59:56 +01:00
tests curl: use 2TLS by default 2015-12-13 09:26:43 +01:00
winbuild winbuild: run buildconf.bat if necessary 2015-09-09 02:37:57 -04:00
.gitattributes Tell git to not convert configure-related files. 2012-07-17 20:35:23 +02:00
.gitignore build: Install zsh completion 2015-11-24 22:22:01 +01:00
.travis.yml travis.yml: Add OS X testbot. 2015-08-21 12:48:52 +02:00
acinclude.m4 acinclude: Remove check for 16-bit curl_off_t 2015-11-09 02:56:40 -05:00
appveyor.yml CI: Added AppVeyor-CI for curl 2015-09-26 23:57:36 +02:00
buildconf configure: remove missing and make it autogenerate 2015-04-30 18:40:35 +02:00
buildconf.bat buildconf.bat: fix syntax error 2015-09-09 02:46:48 -04:00
CHANGES CHANGES: refer to the online changelog 2015-08-06 15:28:27 +02:00
CHANGES.0 code/docs: Use correct case for IPv4 and IPv6 2014-12-27 11:31:55 +00:00
CMakeLists.txt cmake: Fix for add_subdirectory(curl) use-case 2015-10-19 12:49:56 -04:00
configure.ac build: Install zsh completion 2015-11-24 22:22:01 +01:00
CONTRIBUTING.md CONTRIBUTING.md: remove the sourceforge mention 2015-04-30 18:35:43 +02:00
COPYING COPYING: Bumped copyright year to 2015 2015-01-01 05:14:38 +00:00
CTestConfig.cmake ENH: move dashboard location 2009-07-15 19:40:46 +00:00
curl-config.in curl-config.in: eliminate double quotes around CURL_CA_BUNDLE 2015-02-25 10:23:07 +01:00
GIT-INFO curl tool: renaming hugehelp files to tool_hugehelp 2012-12-26 23:30:54 +01:00
libcurl.pc.in build: prevent global LIBS from influencing src and lib build targets 2012-12-03 22:41:18 +01:00
MacOSX-Framework MacOSX-Framework: sdk regex fix for sdk 10.10 and later 2015-10-25 12:35:49 +01:00
Makefile.am build: Install zsh completion 2015-11-24 22:22:01 +01:00
Makefile.dist makefile: Added support for VC14 2015-07-21 18:52:43 +01:00
maketgz maketgz: Fixed some VC makefiles missing from the release tarball 2015-07-30 06:34:03 +01:00
README README: use secure protocol for Git repository 2015-06-15 23:45:34 +02:00
RELEASE-NOTES RELEASE-NOTES: synced with 6c2c019654 2015-12-15 23:12:32 +01:00

                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

README

  Curl is a command line tool for transferring data specified with URL
  syntax. Find out how to use curl by reading the curl.1 man page or the
  MANUAL document. Find out how to install Curl by reading the INSTALL
  document.

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

  You find answers to the most frequent questions we get in the FAQ document.

  Study the COPYING file for distribution terms and similar. If you distribute
  curl binaries or other binaries that involve libcurl, you might enjoy the
  LICENSE-MIXING document.

CONTACT

  If you have problems, questions, ideas or suggestions, please contact us
  by posting to a suitable mailing list. See http://curl.haxx.se/mail/

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

WEB SITE

  Visit the curl web site for the latest news and downloads:

        http://curl.haxx.se/

GIT

  To download the very latest source off the GIT server do this:

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

  (you'll get a directory named curl created, filled with the source code)

NOTICE

  Curl contains pieces of source code that is Copyright (c) 1998, 1999
  Kungliga Tekniska Högskolan. This notice is included here to comply with the
  distribution terms.