From 982536b389da96ea9c7fe802203330a097800112 Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Tue, 27 Oct 2026 15:11:24 +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 abe50ab..0cbb5a5 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -182,7 +182,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