-
Notifications
You must be signed in to change notification settings - Fork 49
Conversation
Since it will be possible to do raw quic in addition to http3, make the alpn configurable
0f657ab
to
d93aa64
Compare
Ok... @nodejs/quic ... here's the current status: The basic implementation is generally working with some caveats.
What is working?
There's still a ton of work to do here and none of the http/3 bits have been implemented at all. The plan there is to have subclasses of both the C++ and JS core classes that implement the additional http3 semantics on top. See the At some point, we will want to implement a prioritization mechanism. Whereas http/2 has prioritization built into the protocol, QUIC does not, and relies on the application to provide prioritization. However, HTTP/3 does include prioritization that is modeled after the http/2 model. Right now, when sending data, we simply iterate through the streams in the order they were inserted into the internal map. Once we have the prioritization scheme worked out, this will need to become a priority queue of streams that actually have data to send. I'm not currently sure if the nghttp3 library will help with this, so we'll just have to see once we get to that. The next major task I will have on this is to refactor the JS QuicStream data flow so that it works consistently across all platforms, then I will update the documentation, followed by working on the error handling and performance. |
Only extend the stream offset if we are in flowing mode on the JS side so that the peer doesn't push too much when we're not reading.
Alrighty then... I have QuicStream working consistently across Linux and Windows now and flow control should be working. Next task will be to catch the documentation up to date and start on error handling. Here soon we'll need to start working on a comprehensive set of tests. |
Documentation updated! |
Currently the following compiler error is generated with clang: ../src/node_quic_session.h:129:15: error: inline function 'node::quic::QuicSession::SetLastError' is not defined [-Werror,-Wundefined-inline] inline void SetLastError( ^ ../src/node_quic_session.h:134:5: note: used here SetLastError(InitQuicError(family, code)); ^ 1 error generated. make[1]: *** [/Users/danielbevenius/work/nodejs/quic/node_quic/out/Release/obj.target/libnode/src/node_quic_monitor.o] Error 1 make[1]: *** Waiting for unfinished jobs.... This commit makes moves the implemention of SetLastError into the inline function in the header.
The `'clientHello'` and `'cert'` events emit optionally during the TLS handshake to allow usercode the opportunity to modify TLS handshake properties and behavior at multiple points through the handshake process. To maximize performance, these are not called by default.
Since it will be possible to do raw quic in addition to http3, make the alpn configurable PR-URL: #31
Only extend the stream offset if we are in flowing mode on the JS side so that the peer doesn't push too much when we're not reading. PR-URL: #31
Currently the following compiler error is generated with clang: ../src/node_quic_session.h:129:15: error: inline function 'node::quic::QuicSession::SetLastError' is not defined [-Werror,-Wundefined-inline] inline void SetLastError( ^ ../src/node_quic_session.h:134:5: note: used here SetLastError(InitQuicError(family, code)); ^ 1 error generated. make[1]: *** [/Users/danielbevenius/work/nodejs/quic/node_quic/out/Release/obj.target/libnode/src/node_quic_monitor.o] Error 1 make[1]: *** Waiting for unfinished jobs.... This commit makes moves the implemention of SetLastError into the inline function in the header. PR-URL: #31
The `'clientHello'` and `'cert'` events emit optionally during the TLS handshake to allow usercode the opportunity to modify TLS handshake properties and behavior at multiple points through the handshake process. To maximize performance, these are not called by default. PR-URL: #31
Ongoing ...
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes