BookinglyTech News
Software

py-libp2p avanza hacia WebRTC-Direct con un listener ICE-Lite en camino

Un colaborador del proyecto resume una semana de ocho commits y once pull requests centrada en arreglar el dialer de WebRTC entre nodos Go y Python y en cerrar fugas de sockets.

3 min de lecturaDev.to0 vistas

Yash Saini, colaborador de py-libp2p y de agent-orchestrator, ha publicado su resumen semanal de contribuciones: ocho commits y once pull requests repartidos entre la implementación en Python de libp2p y un orquestador de agentes escrito en Go. El grueso del esfuerzo fue a la capa de transporte, y el hallazgo con más consecuencias es una condición de carrera en el dialer de WebRTC: las credenciales ICE no quedaban fijadas antes del replay de primer contacto, lo que rompía la interoperabilidad entre nodos Go y Python. El fallo no aparecía en pruebas aisladas y solo se dejaba ver con tráfico real.

En el mismo repositorio ha cerrado fugas de sockets en mplex y en el swarm. El síntoma clásico es conocido: un nodo que lleva días en marcha se queda sin descriptores de fichero porque las conexiones aseguradas no se liberan al apagarse. Aquí el arreglo consiste en soltar los sockets en el cierre, no solo en cerrar la conexión lógica.

ICE-Lite y las fugas que bloquean el CI

El trabajo de más recorrido está todavía abierto. El PR #1532 introduce un listener ICE-Lite real para WebRTC-Direct, unas 166 líneas nuevas que deberían hacer la escucha bastante más sólida, y viene acompañado de la issue #1512, donde el autor explica que la función pasó de deseable a necesaria para dar soporte completo al transporte. Los PR #1497 y #1495, ya fusionados, cubrieron el apagado de conexiones y los fallos del dial mencionados arriba. El PR #1513 fue un empujón de documentación sobre el listener STUN frente al arnés SDP y sobre el dialing v1 frente al v2.

Queda pendiente la issue #1498, sobre fugas residuales de sockets sin cerrar. Ese problema mantiene bloqueado el filtro filterwarnings de la suite de pruebas: mientras no se pueda garantizar que los tests no filtran recursos, el proyecto no activa las comprobaciones estrictas en CI.

Polling de SCM y nombres con barra invertida

En agent-orchestrator el trabajo fue menos de red y más de integración. Los ficheros de workspace con barras invertidas en el nombre se resolvían mal en Linux y macOS, un clásico de rutas multiplataforma que arregla el PR #5055. También apareció una rareza en el adaptador de Copilot: añadía una línea permanente a .git/info/exclude en cada sesión, lo que con el tiempo deja un fichero de exclusiones enorme y sucio (issue #5046). Y el polling a GitHub volvía a listar todos los PR abiertos porque el endpoint no respetaba el parámetro since, algo que el autor dice estar vigilando tras los arreglos.

En revisiones pidió cambios en el PR #1139, que añade comparativas de Gossipsub y ejemplos autónomos, con el argumento de que los ejemplos de una pieza tan compleja tienen que ser sólidos o desorientan a quien llega nuevo. Aprobó en cambio el PR #5137, que incorpora soporte de Arch Linux y desactiva las autoactualizaciones cuando la instalación la gestiona el sistema de paquetes.

El balance de la semana son 508 líneas añadidas frente a 41 eliminadas, señal de trabajo de construcción más que de limpieza. Lo siguiente pasa por cerrar el listener ICE-Lite y volver sobre las fugas del conjunto de pruebas. Hasta entonces, el CI de py-libp2p seguirá sin poder activar sus comprobaciones más estrictas.