Multipath TCP (MPTCP) para DiscourseHub e PWA do Safari iOS atrás do Caddy

Seguinte: interrupção da edição de post no iOS e continuidade da conexão HTTP/3

Encontrei agora um exemplo prático do problema de continuidade de conexão sobre o qual eu estava perguntando.

Em 21 de outubro de 2026, enquanto editava um post na minha instância privada do Discourse em um iPhone 16 Pro usando a PWA do Safari, a barra azul Salvando travou. Eu havia acabado de ditar algumas notas adicionais da aula.

O editor não estava mais acessível, inclusive quando toquei na barra azul de Salvamento, então não consegui copiar o texto não salvo para outro lugar.

Após esperar mais tempo que o habitual, desativei manualmente o Wi-Fi para tentar usar a conectividade celular. A página não mudou imediatamente, mas as tentativas subsequentes de navegação também pareceram travar.

Posteriormente, examinei os logs do Caddy e do nginx e o histórico de revisões do post.

Às 12:20:08 BST:

  • O Caddy registrou uma requisição HTTP/3 PUT /posts/70695 da conexão Wi-Fi da universidade, com todos os 1.000 bytes do corpo da requisição recebidos, mas status 0.

  • O nginx registrou a requisição correspondente como HTTP 400, sem tempo de processamento de rota do Discourse ou upstream.

  • Outras duas requisições do iPhone originadas da conexão celular também receberam HTTP 400 no mesmo segundo.

  • Nenhuma revisão bem-sucedida do post foi registrada naquele momento.

Uma edição subsequente teve sucesso às 12:20:55 BST, mas o texto ditado estava ausente.

Houve também um salvamento automático bem-sucedido de rascunho do Discourse às 12:19:44 BST, embora eu não consiga estabelecer se ele continha o texto perdido.

Reconheço que desativar manualmente o Wi-Fi pode ter interrompido requisições pendentes. No entanto, a operação original de Salvamento já estava travada antes de eu mudar a conexão de rede.

Isso levanta duas questões relacionadas ao meu post original:

  1. Migração de conexão QUIC: Existe uma maneira recomendada de determinar se o navegador iOS tentou migrar a conexão HTTP/3 existente, em vez de estabelecer uma nova conexão ou abandonar as requisições pendentes?

  2. Recuperação do editor do Discourse: Se uma requisição de edição de post travar ou for interrompida, é esperado que o editor permaneça inacessível atrás do estado de Salvamento? Existe algum mecanismo de timeout, repetição ou recuperação que deva preservar o texto não salvo?

Tenho interesse particular na segunda questão, pois não consegui voltar ao editor para copiar meu trabalho antes de tentar restaurar a conectividade.

Não alterei nenhuma configuração do Caddy, nginx ou HTTP/3 como resultado deste incidente, uma vez que as evidências disponíveis ainda não identificaram o que causou a parada inicial da operação de Salvamento.