tranport.get_extra_info('peername') occasionally returns None
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 reproduzindo o caso uvloop 0.17.0, Python 3.11.4 no Linux, e rastreando o comportamento de accept/getpeername mostrado no relatório. Em seguida, analise a issue #3339 vinculada do libuv; a tarefa estará concluída quando a causa for confirmada e o comportamento de peername for verificado após uma correção aplicável ou a resolução da dependência.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
uvloop version: 0.17.0
Python version: 3.11.4
Platform: Linux
I believe the root cause of this issue is that:
- libuv doesn't retrieve peer address while calling
accept() getpeername()fails if the client disconnected already (which is unlikely, but possible)
Here's strace log:
561904 setsockopt(19, SOL_TCP, TCP_NODELAY, [1], 4) = 0
561904 accept4(18, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
561904 getsockname(19, {sa_family=AF_INET, sin_port=htons(32111), sin_addr=inet_addr("127.0.0.1")}, [128 => 16]) = 0
561904 getpeername(19, {sa_family=AF_INET, sin_port=htons(39898), sin_addr=inet_addr("127.0.0.1")}, [128 => 16]) = 0
561904 getpid() = 561904
Please note, that standard asyncio loop uses accept4() call to get the peer address:
564955 accept4(13, {sa_family=AF_INET, sin_port=htons(35516), sin_addr=inet_addr("127.0.0.1")}, [16], SOCK_CLOEXEC) = 16
564955 getsockname(16, {sa_family=AF_INET, sin_port=htons(32111), sin_addr=inet_addr("127.0.0.1")}, [128 => 16]) = 0
564955 ioctl(16, FIONBIO, [1]) = 0
Said that, there's an issue raised in libuv repo which should be addressed first, I suppose: https://github.com/libuv/libuv/issues/3339
- 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
-
Browser (wasm) relay client cannot connect to relays whose URL has a trailing-dot FQDN hostname Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
n0-computer/iroh#4550 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
bytecodealliance/rustix#1689 · 2 comentários ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
home-assistant/supervisor#7248 ·
-
bug cert blocker needs triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
project-chip/connectedhomeip#74373 ·
-
connectivity Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 80/100