Use ConnectEx for non-blocking connect on windows when available.

Still fallback to blocking connect with WSAConnect when ConnectEx is not
available or applicable, but ConnectEx is preferred and recommended by
Microsoft.

Also make some changes to our use of OVERLAPPED in various places in the
ev code, replacing all uses with JanetOverlapped. This also let's us
avoid reusing internal fields for OVERLAPPED which may or may not be
used in various places.
This commit is contained in:
Calvin Rose
2026-03-02 19:39:21 -06:00
parent 39f8cf207c
commit 7fc12ff167
8 changed files with 152 additions and 40 deletions
+4 -5
View File
@@ -148,11 +148,10 @@
# os/execute with empty environment
# pr #1686
# native MinGW can't find system DLLs without PATH and so fails
(assert (= (if (and (= :mingw (os/which))
(nil? (os/stat "C:\\windows\\system32\\wineboot.exe")))
-1073741515 0)
(os/execute [;run janet "-e" "(+ 1 2 3)"] :pe {}))
# native MinGW can't find system DLLs without PATH, SystemRoot, etc. and so fails
# Also fails for address sanitizer builds on windows.
(def result (os/execute [;run janet "-e" "(+ 1 2 3)"] :pe {}))
(assert (or (= result -1073741515) (= result 0))
"os/execute with minimal env")
# os/execute regressions