return HandleCount;
}
+DWORD
+GetCurrentTimeInSeconds()
+{
+ FILETIME Time;
+ FILETIME Adjustment;
+ ULARGE_INTEGER lTime, lAdj;
+ SYSTEMTIME st = { 1970,1,0,1,0,0,0 };
+ SystemTimeToFileTime(&st, &Adjustment);
+ memcpy(&lAdj, &Adjustment, sizeof(lAdj));
+ GetSystemTimeAsFileTime(&Time);
+ memcpy(&lTime, &Time, sizeof(lTime));
+ lTime.QuadPart -= lAdj.QuadPart;
+ return (DWORD)(lTime.QuadPart / 10000000LLU);
+}
+
SOCKET
WSPAPI
WSPAccept(SOCKET Handle,
}
AcceptSocketInfo->SharedData->State = SocketConnected;
+ AcceptSocketInfo->SharedData->ConnectTime = GetCurrentTimeInSeconds();
/* Return Address in SOCKADDR FORMAT */
if( SocketAddress )
Socket->SharedData->State = SocketConnected;
Socket->TdiConnectionHandle = (HANDLE)IOSB.Information;
+ Socket->SharedData->ConnectTime = GetCurrentTimeInSeconds();
/* Get any pending connect data */
if (lpCalleeData != NULL)
PVOID Buffer;
INT BufferSize;
BOOL BoolBuffer;
+ DWORD DwordBuffer;
INT Errno;
TRACE("Called\n");
BufferSize = sizeof(INT);
break;
+ case SO_CONNECT_TIME:
+ DwordBuffer = GetCurrentTimeInSeconds() - Socket->SharedData->ConnectTime;
+ Buffer = &DwordBuffer;
+ BufferSize = sizeof(DWORD);
+ break;
+
case SO_SNDTIMEO:
Buffer = &Socket->SharedData->SendTimeout;
BufferSize = sizeof(DWORD);