diff --git a/srcs/pppoe/vcpe_pppoe.c b/srcs/pppoe/vcpe_pppoe.c index 21dbd4d..56f1930 100644 --- a/srcs/pppoe/vcpe_pppoe.c +++ b/srcs/pppoe/vcpe_pppoe.c @@ -235,6 +235,8 @@ _Noreturn void sessionCalcCb(void *UNUSED(pArg)) { pppapi_close(pUser->session.ppp, 0); pUser->session.retry.timeout = time(NULL); pppapi_free(pUser->session.ppp); + + user_info_delete(pUser->userid); } break; #if 0 diff --git a/srcs/user/user_info.c b/srcs/user/user_info.c index d6c93e7..7b7e52d 100644 --- a/srcs/user/user_info.c +++ b/srcs/user/user_info.c @@ -137,8 +137,10 @@ void user_info_delete(unsigned int userid) { uv_rwlock_rdunlock(&g_userLock); if (pInfo) { + uv_rwlock_wrlock(&g_userLock); HASH_DELETE(hh_id, g_pUserByIdList, pInfo); HASH_DELETE(hh_vxlan, g_pUserByTagsList, pInfo); + uv_rwlock_wrunlock(&g_userLock); } }