- Timestamp:
- Apr 28, 2001, 6:15:18 PM (24 years ago)
- Location:
- trunk/src/wsock32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wsock32/asyncapi.cpp
r3557 r5625 1 /* $Id: asyncapi.cpp,v 1. 8 2000-05-18 22:54:20sandervl Exp $ */1 /* $Id: asyncapi.cpp,v 1.9 2001-04-28 16:15:18 sandervl Exp $ */ 2 2 3 3 /* … … 437 437 if(lEventsPending == 0) 438 438 { 439 dprintf2(("WSAsyncSelectThreadProc: waiting for new events")); 439 440 //wait for events to be enabled 440 441 pThreadParm->u.asyncselect.asyncSem->wait(); … … 460 461 } 461 462 462 //// dprintf(("WSAsyncSelectThreadProc %x rds=%d, wrs=%d, oos =%d, pending = %x", pThreadParm->u.asyncselect.s, noread, nowrite, noexcept, lEventsPending));463 dprintf2(("WSAsyncSelectThreadProc %x rds=%d, wrs=%d, oos =%d, pending = %x", pThreadParm->u.asyncselect.s, noread, nowrite, noexcept, lEventsPending)); 463 464 464 465 pThreadParm->fWaitSelect = TRUE; … … 467 468 if(ret == SOCKET_ERROR) { 468 469 int selecterr = sock_errno(); 469 //// dprintf(("WSAsyncSelectThreadProc %x rds=%d, wrs=%d, oos =%d, pending = %x select returned %x", pThreadParm->u.asyncselect.s, noread, nowrite, noexcept, lEventsPending, selecterr));470 dprintf2(("WSAsyncSelectThreadProc %x rds=%d, wrs=%d, oos =%d, pending = %x select returned %x", pThreadParm->u.asyncselect.s, noread, nowrite, noexcept, lEventsPending, selecterr)); 470 471 if(selecterr && selecterr < SOCBASEERR) { 471 472 selecterr += SOCBASEERR; … … 561 562 } 562 563 } 563 if((lEventsPending & FD_READ) && bytesread > 0) {564 if((lEventsPending & FD_READ) && bytesread >= 0) { 564 565 AsyncNotifyEvent(pThreadParm, FD_READ, NO_ERROR); 565 566 } -
trunk/src/wsock32/asyncthread.cpp
r3557 r5625 1 /* $Id: asyncthread.cpp,v 1. 6 2000-05-18 22:54:21sandervl Exp $ */1 /* $Id: asyncthread.cpp,v 1.7 2001-04-28 16:15:18 sandervl Exp $ */ 2 2 3 3 /* … … 30 30 //****************************************************************************** 31 31 //****************************************************************************** 32 static void APIENTRY AsyncThread(ULONGarg)32 static void _Optlink AsyncThread(void *arg) 33 33 { 34 34 PASYNCTHREADPARM pThreadParm = (PASYNCTHREADPARM)arg; … … 48 48 ULONG QueueAsyncJob(ASYNCTHREADPROC asyncproc, PASYNCTHREADPARM pThreadParm, BOOL fSetBlocking) 49 49 { 50 APIRET rc; 51 TID tid; 50 TID tid; 52 51 53 52 pThreadParm->asyncProc = asyncproc; … … 62 61 if(fSetBlocking) WSASetBlocking(TRUE); 63 62 64 rc = DosCreateThread(&tid, AsyncThread, (ULONG)pThreadParm, CREATE_READY, 16384); 65 if(rc) 66 { 67 dprintf(("QueueAsyncJob: DosCreateThread failed with error %x", rc)); 63 tid = _beginthread(AsyncThread, NULL, 16384, (PVOID)pThreadParm); 64 if (tid == -1) { 65 dprintf(("QueueAsyncJob: _beginthread failed")); 68 66 if(fSetBlocking) WSASetBlocking(FALSE); 69 67 RemoveFromQueue(pThreadParm); … … 166 164 #endif 167 165 return SOCKET_ERROR; 166 } 167 //****************************************************************************** 168 //dump queue 169 //****************************************************************************** 170 void DumpQueue(void) 171 { 172 HANDLE hThread = GetCurrentThread(); 173 PASYNCTHREADPARM pThreadInfo; 174 175 dprintf(("DumpQueue")); 176 177 asyncThreadMutex.enter(); 178 pThreadInfo = threadList; 179 180 while(pThreadInfo) { 181 dprintf(( "SOCKET %08xh thread#%d events %xh pending %xh, select %d", 182 pThreadInfo->u.asyncselect.s, 183 pThreadInfo->hAsyncTaskHandle, 184 pThreadInfo->u.asyncselect.lEvents, 185 pThreadInfo->u.asyncselect.lEventsPending, 186 pThreadInfo->fWaitSelect)); 187 pThreadInfo = pThreadInfo->next; 188 } 189 asyncThreadMutex.leave(); 190 dprintf(("DumpQueue done")); 168 191 } 169 192 //****************************************************************************** -
trunk/src/wsock32/wsock32.cpp
r4860 r5625 1 /* $Id: wsock32.cpp,v 1.3 4 2000-12-30 14:07:24sandervl Exp $ */1 /* $Id: wsock32.cpp,v 1.35 2001-04-28 16:15:18 sandervl Exp $ */ 2 2 3 3 /* … … 235 235 return SOCKET_ERROR; 236 236 } 237 ret = soclose(s);238 237 //Close WSAAsyncSelect thread if one was created for this socket 239 238 FindAndSetAsyncEvent(s, 0, 0, 0); 239 240 // wait thread termination 241 DosSleep(10); 242 ret = soclose(s); 240 243 241 244 if(ret == SOCKET_ERROR) { … … 603 606 dprintf(("recv returned 0, but socket is still connected -> return WSAWOULDBLOCK")); 604 607 WSASetLastError(WSAEWOULDBLOCK); 605 ret = SOCKET_ERROR;608 ret = 0; //graceful close 606 609 } 607 610 }
Note:
See TracChangeset
for help on using the changeset viewer.