[TCPIP] Properly handle listening sockets

We first check if a socket is listening before
checking whether it has connections. This allows
properly returning listening address.
Furthermore, if it's listening, properly return
status so that it displays nice in netstat.

Result: https://twitter.com/HeisSpiter/status/1064245622323200000 :-)
This commit is contained in:
Pierre Schweitzer 2018-11-18 20:51:54 +01:00
parent d18b1fe24b
commit f29016dabe
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -188,12 +188,16 @@ TDI_STATUS InfoTdiQueryGetConnectionTcpTable(PADDRESS_FILE AddrFile,
TI_DbgPrint(DEBUG_INFO, ("Called.\n"));
EndPoint = NULL;
if (AddrFile->Connection != NULL)
EndPoint = AddrFile->Connection->AddressFile;
else if (AddrFile->Listener != NULL)
EndPoint = AddrFile->Listener->AddressFile;
TcpRow.State = 0; /* FIXME */
if (AddrFile->Listener != NULL)
{
EndPoint = AddrFile->Listener->AddressFile;
TcpRow.State = MIB_TCP_STATE_LISTEN;
}
else if (AddrFile->Connection != NULL)
EndPoint = AddrFile->Connection->AddressFile;
TcpRow.dwLocalAddr = AddrFile->Address.Address.IPv4Address;
TcpRow.dwLocalPort = AddrFile->Port;