From ab11e6c4a35bfba5d5d47b8f02c7a09cdd441c8b Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Tue, 2 Jun 2026 13:06:53 +0300 Subject: [PATCH] Fix deadlock in ftppr --- src/ftppr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ftppr.c b/src/ftppr.c index 30c1739..f4a3f63 100644 --- a/src/ftppr.c +++ b/src/ftppr.c @@ -215,6 +215,11 @@ void * ftpprchild(struct clientparam* param) { sasize = sizeof(param->sincr); ss = param->srv->so._accept(param->sostate, clidatasock, (struct sockaddr *)¶m->sincr, &sasize); if (ss == INVALID_SOCKET) { RETURN (858);} +#ifdef _WIN32 + { unsigned long ul = 1; ioctlsocket(ss, FIONBIO, &ul); } +#else + fcntl(ss, F_SETFL, O_NONBLOCK | fcntl(ss, F_GETFL)); +#endif param->srv->so._shutdown(param->sostate, clidatasock, SHUT_RDWR); param->srv->so._closesocket(param->sostate, clidatasock); clidatasock = ss;