Author: cgutman
Date: Sat Jun 27 11:03:45 2009
New Revision: 41633
URL:
http://svn.reactos.org/svn/reactos?rev=41633&view=rev
Log:
- Use the timeout that the caller gives us if it is nonzero so we don't block forever
if nobody wakes us
Modified:
trunk/reactos/lib/drivers/ip/transport/tcp/event.c
Modified: trunk/reactos/lib/drivers/ip/transport/tcp/event.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/transport/t…
==============================================================================
--- trunk/reactos/lib/drivers/ip/transport/tcp/event.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/ip/transport/tcp/event.c [iso-8859-1] Sat Jun 27 11:03:45
2009
@@ -112,6 +112,7 @@
int TCPSleep( void *ClientData, void *token, int priority, char *msg,
int tmio ) {
PSLEEPING_THREAD SleepingThread;
+ LARGE_INTEGER Timeout;
TI_DbgPrint(DEBUG_TCP,
("Called TSLEEP: tok = %x, pri = %d, wmesg = %s, tmio = %x\n",
@@ -131,12 +132,14 @@
InsertTailList( &SleepingThreadsList, &SleepingThread->Entry );
TcpipReleaseFastMutex( &SleepingThreadsLock );
+ Timeout.QuadPart = Int32x32To64(tmio, -10000);
+
TI_DbgPrint(DEBUG_TCP,("Waiting on %x\n", token));
KeWaitForSingleObject( &SleepingThread->Event,
- WrSuspended,
+ Executive,
KernelMode,
TRUE,
- NULL );
+ (tmio != 0) ? &Timeout : NULL );
TcpipAcquireFastMutex( &SleepingThreadsLock );
RemoveEntryList( &SleepingThread->Entry );