mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-22 17:39:53 +03:00
Merge pull request #1060 from dnobori/200101_fix_imperfect_lock
Merge pull request #1060: src/Cedar/Hub.c: fix possible crash because of imperfect Virtual Hub FDB lock
This commit is contained in:
commit
9487bc8d47
@ -1563,13 +1563,15 @@ void HubWatchDogThread(THREAD *t, void *param)
|
|||||||
o2 = NewListFast(NULL);
|
o2 = NewListFast(NULL);
|
||||||
|
|
||||||
// Send an ARP packet
|
// Send an ARP packet
|
||||||
LockList(hub->IpTable);
|
LockHashList(hub->MacHashTable);
|
||||||
{
|
{
|
||||||
num = LIST_NUM(hub->IpTable);
|
num = LIST_NUM(hub->IpTable);
|
||||||
for (i = 0;i < LIST_NUM(hub->IpTable);i++)
|
for (i = 0;i < LIST_NUM(hub->IpTable);i++)
|
||||||
{
|
{
|
||||||
IP_TABLE_ENTRY *e = LIST_DATA(hub->IpTable, i);
|
IP_TABLE_ENTRY *e = LIST_DATA(hub->IpTable, i);
|
||||||
|
|
||||||
|
if (e == NULL) continue;
|
||||||
|
|
||||||
if ((e->UpdatedTime + (UINT64)(IP_TABLE_EXPIRE_TIME)) > Tick64())
|
if ((e->UpdatedTime + (UINT64)(IP_TABLE_EXPIRE_TIME)) > Tick64())
|
||||||
{
|
{
|
||||||
if (e->MacAddress[0] != 0xff || e->MacAddress[1] != 0xff || e->MacAddress[2] != 0xff ||
|
if (e->MacAddress[0] != 0xff || e->MacAddress[1] != 0xff || e->MacAddress[2] != 0xff ||
|
||||||
@ -1645,7 +1647,7 @@ void HubWatchDogThread(THREAD *t, void *param)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UnlockList(hub->IpTable);
|
UnlockHashList(hub->MacHashTable);
|
||||||
|
|
||||||
if ((LIST_NUM(o) + LIST_NUM(o2)) != 0)
|
if ((LIST_NUM(o) + LIST_NUM(o2)) != 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user