Changeset 7041 for trunk/src/wsock32
- Timestamp:
- Oct 13, 2001, 8:51:08 PM (24 years ago)
- Location:
- trunk/src/wsock32
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wsock32/asyncapi.cpp
r6253 r7041 1 /* $Id: asyncapi.cpp,v 1.1 5 2001-07-08 15:44:27 achimhaExp $ */1 /* $Id: asyncapi.cpp,v 1.16 2001-10-13 18:51:07 sandervl Exp $ */ 2 2 3 3 /* … … 415 415 { 416 416 dprintf(("AsyncSelectNotifyEvent: notifying event semaphore, socket: 0x%x, HEVENT: 0x%x, event: 0x%x", pThreadParm->u.asyncselect.s, pThreadParm->notifyHandle, event)); 417 pThreadParm->u.asyncselect.lLastEvent |= event; 417 418 SetEvent(pThreadParm->notifyHandle); 418 419 } … … 442 443 443 444 //break if user cancelled request 444 if(pThreadParm->u.asyncselect.lEvents == 0 ) {445 if(pThreadParm->u.asyncselect.lEvents == 0 || pThreadParm->fCancelled) { 445 446 break; 446 447 } … … 700 701 pThreadParm->u.asyncselect.lEvents = lEventMask; 701 702 pThreadParm->u.asyncselect.lEventsPending = lEventMask; 703 pThreadParm->u.asyncselect.lLastEvent = 0; 702 704 pThreadParm->u.asyncselect.s = s; 703 705 pThreadParm->u.asyncselect.asyncSem = new VSemaphore; … … 734 736 lpEvent->iErrorCode[i] = 0; 735 737 } 736 737 lpEvent->lNetworkEvents = pThreadInfo->u.asyncselect.lEventsPending; 738 739 // TODO is this correct? API says they're cleared 740 pThreadInfo->u.asyncselect.lEventsPending = 0; 741 } else 738 lpEvent->lNetworkEvents = InterlockedExchange((LPLONG)&pThreadInfo->u.asyncselect.lLastEvent, 0); 739 } 740 else 742 741 { 743 742 asyncThreadMutex.leave(); … … 747 746 return SOCKET_ERROR; 748 747 } 748 asyncThreadMutex.leave(); 749 749 750 750 // reset event semaphore if present … … 755 755 } 756 756 757 asyncThreadMutex.leave();758 759 757 WSASetLastError(NO_ERROR); 760 758 return NO_ERROR; -
trunk/src/wsock32/asyncthread.cpp
r6201 r7041 1 /* $Id: asyncthread.cpp,v 1.1 1 2001-07-07 14:29:40 achimhaExp $ */1 /* $Id: asyncthread.cpp,v 1.12 2001-10-13 18:51:07 sandervl Exp $ */ 2 2 3 3 /* … … 40 40 //// WSASetBlocking(FALSE, pThreadParm->hThread); 41 41 42 dprintf(("AsyncThread %x exit", pThreadParm->hAsyncTaskHandle)); 42 43 free((PVOID)pThreadParm); 43 44 } … … 109 110 memset(pThreadParm, 0, sizeof(*pThreadParm)); 110 111 asyncThreadMutex.leave(); 112 } 113 //****************************************************************************** 114 //****************************************************************************** 115 void WSACancelAllAsyncRequests() 116 { 117 PASYNCTHREADPARM pThreadInfo; 118 BOOL found = FALSE; 119 120 dprintf(("WSACancelAllAsyncRequests")); 121 asyncThreadMutex.enter(); 122 pThreadInfo = threadList; 123 124 while(pThreadInfo) { 125 dprintf(("WSACancelAllAsyncRequests %x", pThreadInfo->hAsyncTaskHandle)); 126 pThreadInfo->fCancelled = TRUE; 127 pThreadInfo->u.asyncselect.asyncSem->post(); 128 pThreadInfo = pThreadInfo->next; 129 } 130 asyncThreadMutex.leave(); 131 //TODO: not the right way to wait for the async threads to die 132 DosSleep(250); 111 133 } 112 134 //****************************************************************************** -
trunk/src/wsock32/asyncthread.h
r6201 r7041 1 /* $Id: asyncthread.h,v 1. 7 2001-07-07 14:29:40 achimhaExp $ */1 /* $Id: asyncthread.h,v 1.8 2001-10-13 18:51:07 sandervl Exp $ */ 2 2 3 3 /* … … 71 71 DWORD lEvents; 72 72 DWORD lEventsPending; 73 DWORD lLastEvent; 73 74 SOCKET s; 74 75 int mode; … … 86 87 void EnableAsyncEvent(SOCKET s, ULONG flags); 87 88 BOOL QueryAsyncEvent(SOCKET s, HWND *pHwnd, int *pMsg, ULONG *plEvent); 88 BOOL FindAndSetAsyncEvent(SOCKET s, int mode, int notifyHandle, int notifyData, ULONG lEventMask); 89 BOOL FindAndSetAsyncEvent(SOCKET s, int mode, int notifyHandle, int notifyData, ULONG lEventMask); 90 91 void WSACancelAllAsyncRequests(); 89 92 90 93 #endif //__ASYNCTHREAD_H__ -
trunk/src/wsock32/initwsock32.cpp
r6639 r7041 1 /* $Id: initwsock32.cpp,v 1. 3 2001-09-05 10:26:30 birdExp $1 /* $Id: initwsock32.cpp,v 1.4 2001-10-13 18:51:08 sandervl Exp $ 2 2 * 3 3 * DLL entry point … … 46 46 static HMODULE dllHandle = 0; 47 47 48 INT WIN32API WSACleanup(); 49 //****************************************************************************** 50 //****************************************************************************** 51 BOOL WINAPI WinsockLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 52 { 53 switch (fdwReason) 54 { 55 case DLL_PROCESS_ATTACH: 56 return TRUE; 57 58 case DLL_THREAD_ATTACH: 59 case DLL_THREAD_DETACH: 60 return TRUE; 61 62 case DLL_PROCESS_DETACH: 63 WSACleanup(); 64 return TRUE; 65 } 66 return FALSE; 67 } 48 68 /****************************************************************************/ 49 69 /* _DLL_InitTerm is the function that gets called by the operating system */ … … 69 89 ParseLogStatusWSOCK32(); 70 90 71 dllHandle = RegisterLxDll(hModule, NULL, (PVOID)&wsock32_PEResTab);91 dllHandle = RegisterLxDll(hModule, WinsockLibMain, (PVOID)&wsock32_PEResTab); 72 92 if(dllHandle == 0) 73 return 0UL;93 return 0UL; 74 94 75 95 break; 76 96 case 1 : 77 97 if(dllHandle) { 78 UnregisterLxDll(dllHandle);98 UnregisterLxDll(dllHandle); 79 99 } 80 100 break; -
trunk/src/wsock32/wsa.cpp
r3472 r7041 1 /* $Id: wsa.cpp,v 1. 6 2000-05-02 13:09:43 birdExp $ */1 /* $Id: wsa.cpp,v 1.7 2001-10-13 18:51:08 sandervl Exp $ */ 2 2 3 3 /* … … 91 91 if( --num_startup > 0 ) return 0; 92 92 93 WSACancelAllAsyncRequests(); 93 94 winsockcleanupsockets(); 94 95 … … 167 168 int i = set->fd_count; 168 169 169 while (i--) 170 if (set->fd_array[i] == s) return 1; 170 if(set) { 171 while (i--) { 172 if (set->fd_array[i] == s) return 1; 173 } 174 } 171 175 172 176 return 0; -
trunk/src/wsock32/wsock2.cpp
r6201 r7041 1 /* $Id: wsock2.cpp,v 1. 2 2001-07-07 14:29:40 achimhaExp $ */1 /* $Id: wsock2.cpp,v 1.3 2001-10-13 18:51:08 sandervl Exp $ */ 2 2 3 3 /* … … 36 36 { 37 37 // called too often in some apps, makes log file grow too fast 38 // dprintf(("WSAEnumNetworkEvents 0x%x 0x%x 0x%x NOT CORRECTLY IMPLEMENTED", s, hEvent, lpEvent));38 dprintf2(("WSAEnumNetworkEvents 0x%x 0x%x 0x%x NOT CORRECTLY IMPLEMENTED", s, hEvent, lpEvent)); 39 39 40 40 if(!fWSAInitialized) -
trunk/src/wsock32/wsock32.cpp
r7022 r7041 1 /* $Id: wsock32.cpp,v 1.4 1 2001-10-11 19:24:07sandervl Exp $ */1 /* $Id: wsock32.cpp,v 1.42 2001-10-13 18:51:08 sandervl Exp $ */ 2 2 3 3 /* … … 735 735 { 736 736 int ret; 737 int optlen; 738 int option; 737 739 738 740 if(!fWSAInitialized) { … … 750 752 return SOCKET_ERROR; 751 753 } 752 //testestest 753 #ifdef DEBUG 754 optlen = sizeof(option); 755 option = 0; 756 ret = getsockopt(s, IPPROTO_IP, IP_HDRINCL_OS2, (char *)&option, &optlen); 757 if(ret == 0 && option != FALSE) { 758 *(u_short *)&buf[2] = len; 759 } 754 760 dprintf(("sending to %s", inet_ntoa(((sockaddr_in*)to)->sin_addr))); 755 for(int i=0;i<len;i++) {756 dprintf(("%02x: %x", i, buf[i]));757 }758 #endif759 761 ret = sendto(s, (char *)buf, len, flags, (struct sockaddr *)to, tolen); 760 762 … … 764 766 else WSASetLastError(NO_ERROR); 765 767 766 //Reset FD_WRITE event flag forWSAAsyncSelect thread if one was created for this socket768 //Reset FD_WRITE event flag for WSAAsyncSelect thread if one was created for this socket 767 769 EnableAsyncEvent(s, FD_WRITE); 768 770 return ret; … … 1315 1317 } 1316 1318 ret = getsockopt(s, IPPROTO_IP, IP_HDRINCL_OS2, (char *)optval, optlen); 1319 if(ret == 0) { 1320 ret = (ret != FALSE) ? TRUE : FALSE; 1321 } 1317 1322 break; 1318 1323
Note:
See TracChangeset
for help on using the changeset viewer.