I am still trying to implement webtransport in node.js.
Though I made some progress (and I hope to be able to share it soon).
I have currently a problem in my test harness (I am sitting the second day on it).
Basically, what it does is to connect a node.js http/3 (webtransport client, but does not matter).
First, the clients opens a bidi stream, the server echos 2x 3 bytes and it works fine. (Before or in parallel the server opened a server initiated bidi stream, and the clients also try to send 2 x 3bytes.
However, these are never collected by the application send loop.
I narrowed it down to:
|
void ResumeStream(stream_id id) override { |
the
ResumeStreamfunction.
It currently looks like:
void ResumeStream(stream_id id) override {
nghttp3_conn_resume_stream(*this, id);
Application::ResumeStream(id);
}
Currently, it calls:
|
virtual void ResumeStream(stream_id id) {} |
which is:
virtual void ResumeStream(stream_id id) {}
I think the idea was to call the ResumeStream in the implementation:
|
void ResumeStream(stream_id id) override { ScheduleStream(id); } |
void ResumeStream(stream_id id) override { ScheduleStream(id); }
where ScheduleStream is a private method of the implementation.
Or do I miss something and nghttp3_conn_resume_stream(*this, id); should trigger some callbacks?
@jasnell how should it be fixed? I mean I can just copy over the ScheduleStream code over to the ResumeStream of the http3 class and see if it works? What I think you had add something in mind with the hidden implementation objects?
I am also not sure if I can provide a test for this, as I am not sure how to hit the correct timings.
I am still trying to implement webtransport in node.js.
Though I made some progress (and I hope to be able to share it soon).
I have currently a problem in my test harness (I am sitting the second day on it).
Basically, what it does is to connect a node.js http/3 (webtransport client, but does not matter).
First, the clients opens a bidi stream, the server echos 2x 3 bytes and it works fine. (Before or in parallel the server opened a server initiated bidi stream, and the clients also try to send 2 x 3bytes.
However, these are never collected by the application send loop.
I narrowed it down to:
node/src/quic/http3.cc
Line 357 in 2adaeee
the
ResumeStreamfunction.It currently looks like:
Currently, it calls:
node/src/quic/application.h
Line 127 in 2adaeee
which is:
I think the idea was to call the
ResumeStreamin the implementation:node/src/quic/application.cc
Line 847 in 2adaeee
where
ScheduleStreamis a private method of the implementation.Or do I miss something and
nghttp3_conn_resume_stream(*this, id);should trigger some callbacks?@jasnell how should it be fixed? I mean I can just copy over the
ScheduleStreamcode over to theResumeStreamof the http3 class and see if it works? What I think you had add something in mind with the hidden implementation objects?I am also not sure if I can provide a test for this, as I am not sure how to hit the correct timings.