blob: 950c7c59f727e7a1b17acc5fa31599836bed82fc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
nghttp3
=======
nghttp3 is an implementation of `RFC 9114
<https://datatracker.ietf.org/doc/html/rfc9114>`_ HTTP/3 mapping over
QUIC and `RFC 9204 <https://datatracker.ietf.org/doc/html/rfc9204>`_
QPACK in C.
It does not depend on any particular QUIC transport implementation.
Documentation
-------------
`Online documentation <https://nghttp2.org/nghttp3/>`_ is available.
Build from git
---------------
.. code-block:: shell
$ git clone https://github.com/ngtcp2/nghttp3
$ cd nghttp3
$ git submodule update --init
$ autoreconf -i
$ ./configure
$ make -j$(nproc) check
HTTP/3
------
This library implements `RFC 9114
<https://datatracker.ietf.org/doc/html/rfc9114>`_ HTTP/3. It does not
support server push.
The following extensions have been implemented:
- `Extensible Prioritization Scheme for HTTP
<https://datatracker.ietf.org/doc/html/rfc9218>`_
- `Bootstrapping WebSockets with HTTP/3
<https://datatracker.ietf.org/doc/html/rfc9220>`_
It can also send and receive `SETTINGS_H3_DATAGRAM` from `HTTP
Datagrams and the Capsule Protocol
<https://datatracker.ietf.org/doc/html/rfc9297>`_.
QPACK
-----
This library implements `RFC 9204
<https://datatracker.ietf.org/doc/html/rfc9204>`_ QPACK. It supports
dynamic table.
Optimizations
-------------
This library optionally uses AVX2, if available, to optimize its
performance. To compile with AVX2, add ``-mavx2`` to CFLAGS. Note
that by default, CFLAGS is set to ``-g -O2``. When specifying CFLAGS,
include them as well (e.g., ``-g -O2 -mavx2``).
Examples
--------
- client: https://github.com/ngtcp2/ngtcp2/blob/main/examples/client.cc
- server: https://github.com/ngtcp2/ngtcp2/blob/main/examples/server.cc
- curl: https://github.com/curl/curl/blob/master/lib/vquic/curl_ngtcp2.c
License
-------
The MIT License
Copyright (c) 2019 nghttp3 contributors
|