diff --git a/src/Cedar/Hub.c b/src/Cedar/Hub.c index 32a5d04c..184f3312 100644 --- a/src/Cedar/Hub.c +++ b/src/Cedar/Hub.c @@ -1563,7 +1563,7 @@ void HubWatchDogThread(THREAD *t, void *param) o2 = NewListFast(NULL); // Send an ARP packet - LockHashList(hub->IpTable); + LockHashList(hub->MacHashTable); { num = LIST_NUM(hub->IpTable); for (i = 0;i < LIST_NUM(hub->IpTable);i++) diff --git a/src/Cedar/IPC.c b/src/Cedar/IPC.c index 377b5d59..ffa9baaa 100644 --- a/src/Cedar/IPC.c +++ b/src/Cedar/IPC.c @@ -82,6 +82,12 @@ IPC_ASYNC *NewIPCAsync(CEDAR *cedar, IPC_PARAM *param, SOCK_EVENT *sock_event) Copy(&a->Param, param, sizeof(IPC_PARAM)); + if (param->ClientCertificate != NULL) + { + // Client certificate must be copied for async processing + a->Param.ClientCertificate = CloneX(param->ClientCertificate); + } + if (sock_event != NULL) { a->SockEvent = sock_event; @@ -200,6 +206,12 @@ void FreeIPCAsync(IPC_ASYNC *a) ReleaseCedar(a->Cedar); ReleaseTube(a->TubeForDisconnect); + + if (a->Param.ClientCertificate != NULL) + { + FreeX(a->Param.ClientCertificate); + } + Free(a); }