X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FIOHandler%2FIOEngine_win32.c;h=26ac0a64d6f484e38efeeb1112eb777d661cee18;hb=6d94611a64ceef3401522a0ad404facd82146315;hp=6f755c2307a3ccc2cbf46a0ca5457721aa8ccdad;hpb=9e6045c7b6d7afc774eeb59fa5f5c4e02fe1f037;p=NextIRCd.git diff --git a/src/IOHandler/IOEngine_win32.c b/src/IOHandler/IOEngine_win32.c index 6f755c2..26ac0a6 100644 --- a/src/IOHandler/IOEngine_win32.c +++ b/src/IOHandler/IOEngine_win32.c @@ -67,7 +67,14 @@ static LRESULT CALLBACK engine_win32_wndproc(HWND hWnd, UINT uMsg, WPARAM wParam iosock = engine_win32_get_iosock(wParam); events = WSAGETSELECTEVENT(lParam); - iosocket_events_callback(iosock, (events & (FD_READ | FD_ACCEPT | FD_CLOSE)) != 0, (events & (FD_WRITE | FD_CONNECT)) != 0); + if((events & FD_CONNECT)) { + int err; + if((err = WSAGETSELECTERROR(lParam))) + iosocket_events_callback(iosock, err, 0); + else + iosocket_events_callback(iosock, 0, 1); + } else + iosocket_events_callback(iosock, (events & (FD_READ | FD_ACCEPT | FD_CLOSE)) != 0, (events & FD_WRITE) != 0); return 0; case WM_QUIT: return 0; @@ -111,7 +118,7 @@ static long engine_win32_events(struct _IOSocket *iosock) { if(iosock->socket_flags & IOSOCKETFLAG_CONNECTING) return FD_CONNECT; - return FD_READ | FD_CLOSE | (iosocket_wants_writes(iosock) ? FD_WRITE : 0); + return FD_CLOSE | (iosocket_wants_reads(iosock) ? FD_READ : 0) | (iosocket_wants_writes(iosock) ? FD_WRITE : 0); } static void engine_win32_update(struct _IOSocket *iosock) {