reliable messages may be discarded, without notice

Ouverte
#464 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
18/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
Active
Stack technique
cpp
Domaine
networking

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
C++
Étoiles
10k
Forks
767
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ValveSoftware/GameNetworkingSockets

Toutes les issues de ValveSoftware/GameNetworkingSockets

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.