- Se descapó
- 6 de septiembre de 2026 a las 0:55 UTC
- Autor
- Kamo
- Compromit
- f68bcce
La última forma en que un miembro podría perder una llamada en vivo y todo en su herramienta ventanas sin hacer nada malo. "autenticstictedFetch" respondió TODOS 401 con "window.location.href = '/logout" a partir de setenta y un sitios de llamadas, sin comprobar que la sesión había hecho realmente terminó. Eso es lo más pesado que esta aplicación puede hacer desde el cliente: rompe el documentar hacia abajo, que termina la sesión SIP viviendo en él, y borra el Se trata de Redis que las otras pestañas del miembro siguen trabajando. Un 401 es simplemente la forma más común en que un servidor dice "no esta petición"; no es evidencia que la sesión ha terminado. Los dos caminos de código a ambos lados ya lo sabían y éste no. Sesionar requiere dos 401 consecutivos antes de llamar a una ficha rechazada, y las sondas de advertencia de caducidad de "SessionManager" /api/session/info y firmas de salida sólo en 404, 401 o un TTL a cero, bajo la razón declarada de que "un transitorio blip de red o 5xx nunca debe registrar a un usuario activo". Esto hace el tercero. de acuerdo con ellos: - Un 401 confirma ahora antes de redirictar, usando esa misma sonda. 404, 401 o TTL=0 significa desaparecido y el logout procede exactamente como antes. Un 5xx, un offline sonda, o una sesión en vivo significa que el punto de final rechazó esta petición, que es entregado al que llamaba como un fracaso ordinario en lugar de ser respondió destruyendo la cuenta. - Una pestaña que no tiene la suya propia nunca se firma en un 401, por la razón sessionMonitor explica para su propia rama: nunca fue autenticada AQUI, por lo que su 401 significa "sin credenciales en esta pestaña", y la redirección borraría un Sesión de Redis sus hermanos todavía están usando. - La sonda se comparte durante el vuelo. Una página que despide a seis autenticados Las peticiones a la vez consiguen seis 401 a la vez, y esa es una pregunta, no seis. - useIniciartitles' Abandoned todavía lee "Session expir" y por lo tanto todavía significa "el documento se va"; una sesión viva 401 ahora cae a el reino ordinario del cargador y la autocuración, que es lo que siempre debería tener - Lo pasó. Y fija las protecciones de llamada, que nada sostendía en su lugar: Una sesión de SIP vive en este documento y nada en el servidor sostiene un mango para Así que un derribo termina la llamada. Cinco superficies se interponen entre una llamada y que, y cada uno es un efecto dentro de un archivo grande. el latido de la actividad que mantiene vivo el TTL mientras alguien está escuchando en lugar de escribir, la página escondió BYE para cuando un derribo es inevitable de todos modos, el veto cercano de la ventana de herramientas, y ahora la confirmación 401. liveCallSurvival.test pincha los cinco, y falla cuando alguno se retira (verificado eliminando tres). Vive de fuente en lugar de pruebas de comportamiento, deliberadamente: vitest.config.ts recoge app/lib, app/components, app/pacientes, app/stores, app/stores, app/network y app/utils - NO aplicaciones/contextos o app/gans, donde tres de los cinco viven. Una prueba Escrito a su lado sería recogido por nada y pasar nunca corriendo. 456 archivos de prueba pasan; el eslint está limpio en cada archivo tocado.