From c2da9b88b085e71faf9a16a7a1c4d8fb2eee7559 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 698dac8..56ad220 100644 --- a/src/proxy.h +++ b/src/proxy.h @@ -171,7 +171,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