mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 00:13:57 +00:00
[MSAFD] Implement SO_CONNECT_TIME. CORE-12104
svn path=/trunk/; revision=73197
This commit is contained in:
parent
429d685816
commit
ad99a6f7fd
|
@ -1320,6 +1320,21 @@ WSPSelect(IN int nfds,
|
||||||
return HandleCount;
|
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
|
SOCKET
|
||||||
WSPAPI
|
WSPAPI
|
||||||
WSPAccept(SOCKET Handle,
|
WSPAccept(SOCKET Handle,
|
||||||
|
@ -1666,6 +1681,7 @@ WSPAccept(SOCKET Handle,
|
||||||
}
|
}
|
||||||
|
|
||||||
AcceptSocketInfo->SharedData->State = SocketConnected;
|
AcceptSocketInfo->SharedData->State = SocketConnected;
|
||||||
|
AcceptSocketInfo->SharedData->ConnectTime = GetCurrentTimeInSeconds();
|
||||||
|
|
||||||
/* Return Address in SOCKADDR FORMAT */
|
/* Return Address in SOCKADDR FORMAT */
|
||||||
if( SocketAddress )
|
if( SocketAddress )
|
||||||
|
@ -1884,6 +1900,7 @@ WSPConnect(SOCKET Handle,
|
||||||
|
|
||||||
Socket->SharedData->State = SocketConnected;
|
Socket->SharedData->State = SocketConnected;
|
||||||
Socket->TdiConnectionHandle = (HANDLE)IOSB.Information;
|
Socket->TdiConnectionHandle = (HANDLE)IOSB.Information;
|
||||||
|
Socket->SharedData->ConnectTime = GetCurrentTimeInSeconds();
|
||||||
|
|
||||||
/* Get any pending connect data */
|
/* Get any pending connect data */
|
||||||
if (lpCalleeData != NULL)
|
if (lpCalleeData != NULL)
|
||||||
|
@ -2437,6 +2454,7 @@ WSPGetSockOpt(IN SOCKET Handle,
|
||||||
PVOID Buffer;
|
PVOID Buffer;
|
||||||
INT BufferSize;
|
INT BufferSize;
|
||||||
BOOL BoolBuffer;
|
BOOL BoolBuffer;
|
||||||
|
DWORD DwordBuffer;
|
||||||
INT Errno;
|
INT Errno;
|
||||||
|
|
||||||
TRACE("Called\n");
|
TRACE("Called\n");
|
||||||
|
@ -2542,6 +2560,12 @@ WSPGetSockOpt(IN SOCKET Handle,
|
||||||
BufferSize = sizeof(INT);
|
BufferSize = sizeof(INT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SO_CONNECT_TIME:
|
||||||
|
DwordBuffer = GetCurrentTimeInSeconds() - Socket->SharedData->ConnectTime;
|
||||||
|
Buffer = &DwordBuffer;
|
||||||
|
BufferSize = sizeof(DWORD);
|
||||||
|
break;
|
||||||
|
|
||||||
case SO_SNDTIMEO:
|
case SO_SNDTIMEO:
|
||||||
Buffer = &Socket->SharedData->SendTimeout;
|
Buffer = &Socket->SharedData->SendTimeout;
|
||||||
BufferSize = sizeof(DWORD);
|
BufferSize = sizeof(DWORD);
|
||||||
|
|
|
@ -59,6 +59,7 @@ typedef struct _SOCK_SHARED_INFO {
|
||||||
ULONG RecvTimeout;
|
ULONG RecvTimeout;
|
||||||
ULONG SizeOfRecvBuffer;
|
ULONG SizeOfRecvBuffer;
|
||||||
ULONG SizeOfSendBuffer;
|
ULONG SizeOfSendBuffer;
|
||||||
|
ULONG ConnectTime;
|
||||||
struct {
|
struct {
|
||||||
BOOLEAN Listening:1;
|
BOOLEAN Listening:1;
|
||||||
BOOLEAN Broadcast:1;
|
BOOLEAN Broadcast:1;
|
||||||
|
|
Loading…
Reference in a new issue