diff --git a/srcs/opendhcp183/query.cpp b/srcs/opendhcp183/query.cpp index 77c5c9f..f3cd660 100644 --- a/srcs/opendhcp183/query.cpp +++ b/srcs/opendhcp183/query.cpp @@ -798,8 +798,11 @@ void iptvCacheCb(void *UNUSED(pArg)) { // 新发现设备没有被上报过 if (!pTemp) { auto pCacheDev = (PIPTV_DEV_SET)malloc(sizeof(IPTV_DEV_SET)); + auto pRepDev = (PIPTV_DEV_SET)malloc(sizeof(IPTV_DEV_SET)); + memcpy(pCacheDev, pDev, sizeof(IPTV_DEV_SET)); - HASH_ADD_STR(report, iptvMAC, pCacheDev); + memcpy(pRepDev, pDev, sizeof(IPTV_DEV_SET)); + HASH_ADD_STR(report, iptvMAC, pRepDev); isReport = true; // 添加到缓存列表供后续查询 @@ -836,6 +839,11 @@ void iptvCacheCb(void *UNUSED(pArg)) { inet_http_post_async(pUrl, pStrPro, on_http_response_cb, (void *)pStrPro); } + HASH_ITER(hh, report, pDev, pTmp) { + HASH_DEL(report, pDev); + free(pDev); + } + uv_sleep(10); } while (true); }