Skip to content

quic: http/3 resumeStream does not work #63784

@martenrichter

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

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions