start_tls: AssertionError if writing is paused
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- python
- Domínio
- networking
Direção de pesquisa
Comece por tests/test_tcp.py, especialmente test_start_tls_server_1, e reproduza o caso de payload grande descrito na issue. Em seguida, inspecione uvloop/sslproto.pyx nas proximidades de SSLProtocol.resume_writing e start_tls para entender a transição do controle de fluxo. O trabalho concluído deve incluir uma correção confirmada para a assertion e um teste de regressão cobrindo uma escrita pausada durante a inicialização do TLS.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
First found in the CPython port of sslproto (see https://github.com/python/cpython/issues/109051 but disregard the title, it's not platform-specific), and it can be reproduced in uvloop.
Traceback
protocol.resume_writing() failed
protocol: <uvloop.loop.SSLProtocol object at 0x1033910c0>
transport: <TCPTransport closed=False reading=True 0x1098351c0>
Traceback (most recent call last):
File "uvloop/handles/basetransport.pyx", line 96, in uvloop.loop.UVBaseTransport._maybe_resume_protocol
run_in_context(
File "uvloop/loop.pyx", line 101, in uvloop.loop.run_in_context
return context.run(method)
File "uvloop/sslproto.pyx", line 922, in uvloop.loop.SSLProtocol.resume_writing
assert self._ssl_writing_paused
AssertionError
Simplest way to reproduce is to increase payload size in test_start_tls_server_1. Send will block and transport will request to pause writing. After start_tls(), the transport will attempt to resume the now-switched protocol, which was not aware it was ever supposed to be paused.
I commented further in the original bug with some notes. The CPython implementation is a bit different (it has a redundant buffering mechanism with a deque which I believe is unnecessary) but the fundamental issue is the same.
Question: what is the motivation for the extra flow control layer in SSLProtocol? It seems it was introduced in uvloop first. I suggested it can be removed and let the original protocol and original transport deal with flow control (which would also fix the bug). But it wouldn't be a good idea to remove it if it's solving a known problem.
- Linguagem predominante
- Cython
- Estrelas
- 11.9k
- Forks
- 615
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de MagicStack/uvloop
-
License not clear Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#759 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#741 · 2 reações ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
MagicStack/uvloop#702 · 8 comentários · 9 reações ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
MagicStack/uvloop#766 ·
-
Directly constructed subprocess pipe protocols segfault when callbacks use a non-process owner Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
MagicStack/uvloop#765 ·
Todas as issues de MagicStack/uvloop
Issues semelhantes
-
bug good first issue needs testing
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
TencentCloud/Octop#1093 · 1 comentário ·
-
Nmap
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
community-scripts/ProxmoxVE#17471 · 2 comentários ·
-
bug DEV: backend
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
learningequality/kolibri#15331 ·