From 371e78691d321f703cbf19b46e5cc4d22dff1241 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Tue, 27 Oct 2026 15:11:25 +0300 Subject: [PATCH] Windows: an error set where socket errors are read errno is WSAGetLastError() on Windows, but seterrno3() set the C library's errno there: the EAGAIN of a TLS read or write wanting the socket again was not seen as one, and the error left was whatever the socket call before had set. seterrno3() sets the socket error now. Co-Authored-By: Claude Opus 5.5 --- src/proxy.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/proxy.h b/src/proxy.h index a7e8407..25886f5 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -191,7 +191,8 @@ size_t threadstacksize(int extra); #ifndef strncasecmp #define strncasecmp strnicmp #endif -#define seterrno3(x) _set_errno(x) +/* errno is WSAGetLastError() here */ +#define seterrno3(x) WSASetLastError(x) #else #define seterrno3(x) (errno = x) #endif