wasm: Close with codes other than 1000 throws, so CloseNow never closes
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 20/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- go
- Domaine
- networking
Piste de recherche
The issue describes the failure in the js/wasm build when Conn.Close passes unsupported codes to the browser's WebSocket.close, and links PR #576, which is already open. Read that pull request and the Close/CloseNow path it changes; the issue's expected behavior is that rejected codes are sent as 1000 so the browser closes the socket without an error or panic.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
In the js/wasm build, Conn.Close passes the code straight to the browser's WebSocket.close, which only accepts 1000 and 3000-4999 and throws InvalidAccessError for anything else. This package closes with 1001 (CloseNow), 1008 (read or dial context done), 1009 (read limit) and 1011 (write error), so all of those return an error and leave the socket open. Under TinyGo the throw is not recovered, so the program panics.
To reproduce, dial any server and call c.CloseNow(). In Chromium it returns:
failed to close WebSocket: JavaScript error: Failed to execute 'close' on 'WebSocket': The close code must be either 1000, or between 3000 and 4999. 1001 is neither.
A fix is to send 1000 to the browser for the codes it rejects. I have a PR for it.
- Langage dominant
- Go
- Étoiles
- 5.5k
- Forks
- 379
- 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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de coder/websocket
-
Must not wrap io.EOFPeut-être pris @Yanhu007 l’a pris il y a 175 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
export wstestOuverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
Toutes les issues de coder/websocket
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
FootprintAI/Containarium#2338 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
SagerNet/sing-openvpn#11 ·
-
priority: P3 type: devops
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
jiegui2025/hwspec#57 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
columnar-tech/dbc#513 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
streamplace/streamplace#1351 ·
Les mainteneurs répondent en général sous 2 jours