http://bugs.winehq.org/show_bug.cgi?id=60477 Bug ID: 60477 Summary: wininet: HTTP CONNECT proxy authentication state invalidated upon upstream socket reset under rotating gateway Product: Wine Version: 10.0 Hardware: x86-64 URL: https://learn.microsoft.com/en-us/windows/win32/winine t/handling-authentication OS: Linux Status: UNCONFIRMED Severity: normal Priority: P3 Component: wininet Assignee: wine-bugs@list.winehq.org Reporter: info@neurobitlab.com Target Milestone: --- Distribution: Ubuntu Description: Under Wine 9.20 through 10.0, 32-bit and 64-bit Windows applications utilizing WinINet (InternetOpenW, HttpSendRequestW) fail to transparently re-authenticate when an upstream HTTP proxy gateway resets the underlying TCP connection or rotates its egress endpoint. Test Setup & Environment: - OS: Linux 6.11 / x86_64 - Wine: wine-10.0 (staging / vanilla) - Subsystem: dlls/wininet/http.c - Network Topology: Windows client application routing outbound HTTPS via HTTP CONNECT proxy requiring Basic/Digest authentication (RFC 7235). Steps to Reproduce: 1. Initialize WinINet session via InternetOpenW with INTERNET_OPEN_TYPE_PROXY: lpszProxy = L"http=http://proxy-node.local:8080" 2. Supply proxy credentials using InternetSetOptionW with INTERNET_OPTION_PROXY_USERNAME and INTERNET_OPTION_PROXY_PASSWORD. 3. Establish persistent HTTP/1.1 keep-alive session to an external target. 4. Simulate an upstream cellular gateway IP rotation or gateway socket teardown (e.g., standard carrier-grade NAT rebind on mobile hardware gateways). 5. Attempt subsequent HttpSendRequestW on the same session handle. Observed Behavior: On native Windows 10/11 (mshtml / wininet.dll), WinINet catches the dropped socket, discards the cached connection pool entry, re-opens a fresh TCP socket, and re-issues the HTTP CONNECT handshake with Proxy-Authorization header. Under Wine, wininet attempts to write the next request into the defunct socket descriptor, receives ECONNRESET / EPIPE, and immediately fails with error 12031 (ERROR_INTERNET_CONNECTION_RESET) without initiating a re-connection or re-evaluating the proxy auth state machine in HTTP_ProcessAsync. Upstream Protocol References & Test Data: - Microsoft WinINet Authentication Specification: https://learn.microsoft.com/en-us/windows/win32/wininet/handling-authenticat... - IETF RFC 7235 (Hypertext Transfer Protocol - Authentication): https://datatracker.ietf.org/doc/html/rfc7235 - Wine Git Source Reference (dlls/wininet/http.c): https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/wininet/http.c - Reproducer Socket Traces & Cellular Gateway Test Environment: https://pxm2.io/guides/ Expected Behavior: WinINet should catch socket reset errors on pooled idle connections, flush the dead socket, and automatically retry the HTTP CONNECT negotiation before returning ERROR_INTERNET_CONNECTION_RESET to the calling application. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.