reliable messages may be discarded, without notice

オープン
#464 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
18/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
活発
技術スタック
cpp
領域
networking

調査の方向性

The issue lists four cases where reliable messages are silently dropped: full send buffer, full receive buffer, full receive message count, and oversize received messages. Start by tracing the reliable send and receive paths for each limit, and check how the library reports or hides the drop. Done means the maintainers have decided whether to notify the application, close the connection, or expose sequence numbers, and any agreed change is covered by tests. This needs maintainer input before any code.

索引モデルが issue の本文から書いたものです。

説明

There are several situations in which steam discards reliable messages:

  • send buffer fills up
  • recv buffer fills up
  • recv messages count fills up
  • received message is longer than the limit

and possibly more.

Steam never notifies the application that a reliable message was discarded. It also allows sending and receiving more messages. This leaves a gap in the supposedly reliable messages. And that causes issues.

Is it possible to configure steam to detect such case (on the receiving end), and either notify the application, or close the connection?

Alternatively, I have implemented a simple sequence number per lane on top of steam messages, but that is 4 or 8 bytes per message, which I would prefer to avoid. Does steam provide sufficient information to detect discarded reliable message, eg. using the sequence number that steam provides? Are these sequence numbers shared or separate for each lane? Are they separated or shared between reliable and unreliable messages in the same lane?

Thanks for any clarifications.

主要言語
C++
スター
10k
フォーク
767
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ValveSoftware/GameNetworkingSockets のほかの issue

ValveSoftware/GameNetworkingSockets の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。