f\r
f\r
WSAIoctl SOCKET_ERROR = [\r
- winsock-error-string throw\r
+ maybe-winsock-exception throw\r
] when\r
] with-out-parameters ;\r
\r
int\r
{ SOCKET void* int PVOID DWORD LPDWORD void* }\r
stdcall alien-indirect drop\r
- winsock-error-string [ throw ] when* ; inline\r
+ winsock-error ; inline\r
\r
M: object establish-connection ( client-out remote -- )\r
make-sockaddr/size <ConnectEx-args>\r
f >>lpdwBytesReceived\r
(make-overlapped) >>lpOverlapped ; inline\r
\r
+! AcceptEx return value is useless\r
: call-AcceptEx ( AcceptEx -- )\r
{\r
[ sListenSocket>> ]\r
[ dwRemoteAddressLength>> ]\r
[ lpdwBytesReceived>> ]\r
[ lpOverlapped>> ]\r
- } cleave AcceptEx drop\r
- winsock-error-string [ throw ] when* ; inline\r
+ } cleave AcceptEx drop winsock-error ; inline\r
\r
: (extract-remote-address) ( lpOutputBuffer dwReceiveDataLength dwLocalAddressLength dwRemoteAddressLength -- sockaddr )\r
f <void*> 0 <int> f <void*> [ 0 <int> GetAcceptExSockaddrs ] keep *void* ;\r