Skip to content

quic: http/3 resumeStream does not work #63784

Description

@martenrichter

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    quicIssues and PRs related to the QUIC transport implementation.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions