From a2c01e268c29baa592742a621ba6b3b3e44586e1 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 29 Apr 2022 19:30:05 +0000 Subject: [PATCH] [ldk-net] Correct pollfds array offset after reads Previously, we were copying the pollfds array at an offset of one into the handler thread's stack. However, when it was changed to copying at a 0 offset (adding the pipe read fd at the end instead of beginning), the disable-read handling code was not updated. This leads to an assertion failure at runtime if LDK decides we need to stop reading due to the outbound buffer of a peer being full. --- ldk-net/ldk_net.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ldk-net/ldk_net.c b/ldk-net/ldk_net.c index 9752136..6e858b0 100644 --- a/ldk-net/ldk_net.c +++ b/ldk-net/ldk_net.c @@ -266,8 +266,8 @@ static void *sock_thread_fn(void* arg) { if (*res.contents.result) { lockres = pthread_mutex_lock(&handler->sockets_mutex); assert(lockres == 0); - assert(handler->pollfds[i - 1].fd == pollfds[i].fd); // Only we change fd order! - handler->pollfds[i - 1].events = POLLOUT; + assert(handler->pollfds[i].fd == pollfds[i].fd); // Only we change fd order! + handler->pollfds[i].events = POLLOUT; lockres = pthread_mutex_unlock(&handler->sockets_mutex); assert(lockres == 0); } -- 2.30.2