- Navios
- 6 de setembro de 2026 às 00:55 UTC
- Autor
- Kamo
- Enviar
- f68bcce
A última maneira que um membro poderia perder uma chamada ao vivo e tudo em sua ferramenta janelas sem fazer nada de errado. `autenticatedFetch` respondeu TODO 401 com `window.location.href = '/logout' — a partir de setenta e um sítios de chamada, sem que a sessão tenha sido efectivamente Acabou. Essa é a coisa mais pesada que este aplicativo pode fazer do cliente: rasga o documento para baixo, o que termina a sessão SIP vivendo nele, e apaga o partilhou a sessão Redis onde as outras páginas do membro ainda estão a trabalhar. Um 401 é simplesmente a forma mais comum como um servidor diz "não este pedido"; não é evidência que a sessão acabou. Os dois caminhos de código de ambos os lados já sabiam disso e este não sabia. 'SessionMonitor' requer dois 401s consecutivos antes de chamar um token rejeitado, e `SessionManager's adverting probes /api/session/info e signs out apenas em 404, 401 ou um TTL a zero, com base nos motivos declarados de que "um blip de rede ou 5xx nunca deve assinar um usuário ativo". Isto torna o terceiro concordar com eles: - Um 401 agora confirma antes de redirecionar, usando a mesma sonda. 404, 401 ou TTL<=0 significa desaparecido e o logout prossegue exatamente como antes. Um 5xx, um offline sonda, ou uma sessão ao vivo significa que o endpoint recusou este pedido, que é entregue ao chamador como uma falha comum `Não autorizada` em vez de ser respondeu destruindo a aba. - Uma aba não possuindo nenhum símbolo próprio nunca é assinada em um 401, pela razão SessionMonitor soletra para o seu próprio ramo: nunca foi autenticado AQUI, assim, seu 401 significa "sem credenciais nesta aba", e redirecionamento iria excluir um Redis sessão seus irmãos ainda estão usando. - A sonda é partilhada durante o voo. Uma página que dispara seis autenticadas Os pedidos de uma vez recebem seis 401 de uma só vez, e isso é uma pergunta, não seis. - useEntitles' `isAbandoned` ainda lê "Sessão expirada" e, portanto, ainda significa "o documento está deixando"; um live-session 401 agora cai para o reteste ordinário do carregador e auto-cura, que é o que sempre deve ter Aconteceu-lhe. E prendam as proteções de chamada, que nada se mantinha. Uma sessão SIP vive neste documento e nada no servidor tem um comando para Então, um rompimento acaba com a chamada. Cinco superfícies estão entre uma chamada e que, e cada um é um efeito dentro de um arquivo grande - a carga antes confirmar, O batimento cardíaco que mantém o TTL vivo enquanto alguém está a ouvir Em vez de escrever, a página esconde BYE para quando uma demolição é inevitável de qualquer maneira, A janela de ferramentas fecha o veto, e agora a confirmação 401. liveCallSurvival. test pinos todos os cinco, e falha quando algum é removido (verificado removendo três). Greps de origem em vez de testes comportamentais, deliberadamente: vitest.config.ts coleta aplicativo/lib, aplicativo/componentes, aplicativo/pacientes, aplicativo/armazenagem, aplicativo/rede e aplica/utils — NÃO aplica/contextos ou aplica/ganchos, em que três dos cinco vivem. Um teste escrito ao lado deles seria recolhido por nada e passar por nunca correndo. 456 arquivos de teste passam; eslint está limpo em cada arquivo tocado.