Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

getaddrinfo() returns wrong scope ID for IPv6 link-local addresses when type=SocketKind.SOCK_STREAM

Abierto
#539 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
networking

Línea de trabajo

Comienza ejecutando el script de reproducción proporcionado en Linux con una dirección IPv6 link-local, comparando uvloop con vanilla asyncio y socket.getaddrinfo(). El problema estará resuelto cuando uvloop devuelva el ID de ámbito correcto distinto de cero para SOCK_STREAM, coincidiendo con las otras implementaciones.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

  • uvloop version: 0.17.0
  • Python version: 3.11.3
  • Platform: Linux
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: yes
  • Does uvloop behave differently from vanilla asyncio? How?: Vanilla asyncio returns the correct scope ID, uvloop returns 0

When passing type=SocketKind.SOCK_STREAM to getaddrinfo() in uvloop, the scope ID for link-local addresses is left as 0. This works correctly (returns nonzero scope ID) in socket.getaddrinfo() and vanilla asyncio's corresponding function.

Repro script (requires psutil installed):

from asyncio import get_running_loop, run
from socket import SocketKind

import psutil
import uvloop


async def main():
    for ifname, addresses in psutil.net_if_addrs().items():
        for addr in addresses:
            if addr.address.startswith("fe80::") and "%" in addr.address:
                gai_res = await get_running_loop().getaddrinfo(addr.address, 0, type=SocketKind.SOCK_STREAM)
                scope_id = gai_res[-1][-1][-1]
                print("Scope id for", gai_res[-1], "is", scope_id)
                return

    print("Could not find a suitable link-local address")

# Comment out this line, and it works fine
uvloop.install()
run(main())
Lenguaje dominante
Cython
Estrellas
11.9k
Forks
615
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MagicStack/uvloop

Todos los issues de MagicStack/uvloop

Issues similares

Más issues de Networking

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.