Fix WSLC localhost port relay wedge on repeated download (reverse) transfers (#40871)
* Add hourly upstream sync workflow for feature/wsl-for-apps * Remove upstream sync workflow * Ignore sigpipe
Kevin Vega committed
Jun 22, 2026 at 17:44 UTC
9bdc484070a3862ff171c419924e7bd41dd2f7a1
1 file changed
+6
src/linux/init/WSLCInit.cpp
+6
@@ -781,6 +781,12 @@ void HandleMessageImpl(
781
Transaction.SendResultMessage<uint32_t>(SocketAddress.svm_port);
782
Channel.Close();
783
UtilSetThreadName("PortRelay");
784
+
785
+ // If the host end of a relay socket is reset, a write will raise SIGPIPE. Ignore it so
786
+ // the failure surfaces as an EPIPE return value (handled by the relay loop) instead of
787
+ // terminating this forked PortRelay process and tearing down the vsock accept listener.
788
+ THROW_LAST_ERROR_IF(signal(SIGPIPE, SIG_IGN) == SIG_ERR);
789
+
790
RunLocalHostRelay(SocketAddress, ListenSocket.get());
791
}
792