libp2p / libp2p/specs

Carify usage and behaviour of stream resets

Open
#466 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
1.8k
Forks
320
Avg merge
11d 15h
Merged PRs (30d)
1

Description

Inspired by this discussion: https://github.com/libp2p/specs/pull/412#discussion_r980706766

Currently, several specifications (mplex, yamux and WebRTC) talk about the capability of a "stream reset".

mplex properly documents, what a reset actually is and how clients are meant to behave when receiving a reset.

yamux also has a section on "Closing a stream" with similar semantics.

I'd like to suggest to introduce a "Resetting a stream" section perhaps under "Definitions" which documents how any libp2p substream should behave in regards to resets.

This will give us a canonical place to link to and clarify, what a stream reset actually is. The current state is confusing because the draft WebRTC spec for example talks about only terminating the sending part. See https://github.com/libp2p/specs/pull/412#discussion_r983113010 for details.

cc @mxinden @marten-seemann

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked libp2p/specs discussion and the mplex, yamux, and WebRTC stream-reset references to compare their semantics. Done means the specifications have a canonical section describing how any libp2p substream behaves on reset and can link to it consistently.

Written by the indexing model from the issue text.

Assessment

Domain
documentation, networking
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.