Ignore:
Timestamp:
Oct 13, 2001, 8:51:08 PM (24 years ago)
Author:
sandervl
Message:

several updates + fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wsock32/asyncapi.cpp

    r6253 r7041  
    1 /* $Id: asyncapi.cpp,v 1.15 2001-07-08 15:44:27 achimha Exp $ */
     1/* $Id: asyncapi.cpp,v 1.16 2001-10-13 18:51:07 sandervl Exp $ */
    22
    33/*
     
    415415    {
    416416        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;
    417418        SetEvent(pThreadParm->notifyHandle);
    418419    }
     
    442443
    443444        //break if user cancelled request
    444         if(pThreadParm->u.asyncselect.lEvents == 0) {
     445        if(pThreadParm->u.asyncselect.lEvents == 0 || pThreadParm->fCancelled) {
    445446                break;
    446447        }
     
    700701   pThreadParm->u.asyncselect.lEvents        = lEventMask;
    701702   pThreadParm->u.asyncselect.lEventsPending = lEventMask;
     703   pThreadParm->u.asyncselect.lLastEvent     = 0;
    702704   pThreadParm->u.asyncselect.s              = s;
    703705   pThreadParm->u.asyncselect.asyncSem       = new VSemaphore;
     
    734736           lpEvent->iErrorCode[i] = 0;
    735737        }
    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
    742741   {
    743742      asyncThreadMutex.leave();
     
    747746      return SOCKET_ERROR;
    748747   }
     748   asyncThreadMutex.leave();
    749749
    750750   // reset event semaphore if present
     
    755755   }
    756756
    757    asyncThreadMutex.leave();
    758 
    759757   WSASetLastError(NO_ERROR);
    760758   return NO_ERROR;
Note: See TracChangeset for help on using the changeset viewer.