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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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