2018-05-11 23:48:12 +08:00
|
|
|
Tomer Doron <tomerd@apple.com> <tomer.doron@gmail.com>
|
|
|
|
Tomer Doron <tomerd@apple.com>
|
2019-02-02 00:18:08 +08:00
|
|
|
Tomer Doron <tomerd@apple.com> tomer doron <tomer@apple.com>
|
2018-05-11 23:48:12 +08:00
|
|
|
Max Moiseev <moiseev@apple.com>
|
2018-11-28 17:53:43 +08:00
|
|
|
Johannes Weiss <johannesweiss@apple.com> Johannes Weiß <johannesweiss@apple.com>
|
2018-05-11 23:48:12 +08:00
|
|
|
Adam Nemecek <adamnemecek@gmail.com>
|
Changes to `HTTPHeaders` API to integrate with HTTP/2 `HPACKHeaders` API (#525)
Motivation:
HTTP/2 adds an additional item to a header key/value pair:
its indexability. By default, headers can be inserted into
the HPACK header table index; sometimes this will be denied
(common case is 'content-length' header, which is rarely going
to be the same, and will just cause the table to purge more
often than is really necessary). Additionally, a header may be
marked as not only non-indexable but also non-rewritable by
proxies. HTTPHeaders provides nowhere to store this, so the
HPACKHeaders implementation referenced in
apple/swift-nio-http2#10 was created to add in that capability.
Now, given that we really want the HTTP version to be an
implementation detail, we want to keep the HPACK details hidden,
and would thus be using HTTPHeaders in client APIs. NIOHTTP2
already has a HTTP1-to-HTTP2 channel handler that translates
between the two. Thus it behooves us to have the means to copy
the actual key/value pairs between the two types without making
a round-trip from UTF-8 bytes to UTF-16 Strings. These changes
allow NIOHPACK or NIOHTTP2 to implement that round-trip internally.
Modifications:
- HTTPHeader and HTTPHeaderIndex types are now public.
- HTTPHeaders.buffer and HTTPHeaders.headers properties are now
public.
- A new static method, HTTPHeaders.createHeaderBlock(buffer:headers:)
was created to serve as a public means to create a HTTPHeaders from
a ByteBuffer from outside NIOHTTP1. @Lukasa suggested this should
be a static method rather than an initializer.
Result:
Nothing in NIOHTTP1 changes in operation. All public types have
documentation comments noting that they are only public for very
specific reasons, and are not intended for general use. Once this
is committed, NIOHPACK & NIOHTTP2 will be able to implement fast
round-trips between HTTPHeaders and HPACKHeaders.
2018-08-09 21:03:31 +08:00
|
|
|
Jim Dovey <jimdovey@mac.com> <jdovey@linkedin.com>
|
2018-05-11 23:48:12 +08:00
|
|
|
<bas@basbroek.nl> <BasThomas@users.noreply.github.com>
|
|
|
|
<daniel_dunbar@apple.com> <daniel@zuster.org>
|
|
|
|
<johannesweiss@apple.com> <github@tux4u.de>
|
|
|
|
<norman_maurer@apple.com> <norman.maurer@googlemail.com>
|
|
|
|
<cbenfield@apple.com> <lukasaoz@gmail.com>
|
|
|
|
<cbenfield@apple.com> <lukasa@apple.com>
|
2018-11-28 17:53:43 +08:00
|
|
|
<helge@alwaysrightinstitute.com> <devteam@zeezide.de>
|
2019-02-02 00:18:08 +08:00
|
|
|
Tim Condon <0xtimc@gmail.com> Tim <0xTim@users.noreply.github.com>
|
|
|
|
Tim Condon <0xtimc@gmail.com> Tim <0xtimc@gmail.com>
|