Une demande rejetée ne met plus fin à l'appel et à la session

Fixkamo-internal
Expédié
6 septembre 2026 à 00:55 UTC
Auteur
Kamo
Commite
f68bcce

La dernière façon pour un membre pourrait perdre un appel en direct et tout dans son outil les fenêtres sans rien faire de mal. A tout le 401 a répondu à CHAQUE 401 avec "window.location.href" et "/engout" à partir de soixante et 21 ans, sans vérification que la session avait effectivement terminé. C'est la chose la plus lourde que cette application puisse faire du client: elle déchire le document en bas, qui met fin à la session SIP qui y vit, et il supprime Redis a partagé la session Redis dans laquelle les autres onglets du membre travaillent encore. A 401 est simplement la manière la plus courante pour un serveur dit "pas cette demande"; il ne s'agit pas d'une preuve que la session est terminée. Les deux chemins de code de part et d'autre le savaient déjà et celui-ci ne le savait pas. «sessionMonitor» exige deux 401 consécutifs avant d'appeler un jeton rejeté, et les sondes d'avertissement d'expiration de SessionManager/api/session/info et signe uniquement au 404, 401 ou à zéro un TTL, au motif déclaré que "un TTL transitoire Le blip ou le réseau 5xx ne doit jamais délimiter un utilisateur actif". Cela fait le troisième sont d'accord avec eux: - A 401 confirme maintenant avant qu'il ne redirige, à l'aide de cette même sonde. 404, 401 ou TTL'0 signifie r libellé et la déconnexion se poursuit exactement comme avant. A 5xx, une version hors ligne sonde, ou une session en direct, signifie que le critère d'évaluation a refusé cette demande, qui est remis à l'appelant en tant qu'échec ordinaire «non autorisé» au lieu d'être répondit en détruisant l'onglet. - Un onglet ne contenant aucun en-devence n'est jamais signé sur un 401, pour le motif sessionMonitor explique sa propre branche: il n'a jamais été authentifié ICI, Ainsi, sa 401 signifie "pas d'accréditation dans cet onglet", et la redirection supprimerait un Redis session ses frères et sœurs continuent d'utiliser. - La sonde est partagée en vol. Une page qui a ouvert six authentifiés demande à la fois six 401 à la fois, et c'est une question, pas six. - utiliser les droits "isAbandoned" indique toujours "Session expirée" et donc toujours signifie "le document quitte"; une session 401 en direct tombe maintenant à la réessai ordinaire et l'auto-ciblage du chargeur, ce qui devrait toujours avoir c'est ce qui s'est passé. Et épinglez les protections d'appel, que rien ne tenait en place: Une session SIP vit dans ce document et rien sur le serveur n'est tenu une poignée pour C'est ainsi qu'un déchirement termine l'appel. Cinq surfaces se dressent entre un appel et que, et tout est un effet à l'intérieur d'un grand fichier - la confirmation de l'avant-plein, le rythme cardiaque de l'activité qui maintient le TTL en vie pendant que quelqu'un écoute plutôt que de taper, la pagehide BYE pour quand un démontage est inévitable de toute façon, le veto ferme de la fenêtre à outils, et maintenant la confirmation 401. liveCallSurvival.test épingles les cinq et échouer lorsqu'il est enlevé (vérifié en enlevant trois). Source greps plutôt que tests comportementaux, délibérément: vitest.config.ts collecte l'application/le d, l'application/les composants, les app/patients, les app/magasins, les applications/réseaux et app/utils - NE PAS app/contextes ou app/crochets, où trois des cinq personnes sont en direct. Un essai écrit à côté d'eux serait collecté par rien et passera en ne courant jamais. 456 fichiers de test pass; eslint est propre sur chaque fichier touché.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation