[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

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;