new Client Problem
namse opened this issue · comments
Nam Se Hyun commented
Sock 이 132인 ClientSession이 disconnect 되었습니다,
하지만 refCount가 아직 0이 아니여서 ClientManager의 mClientList에서 바로 지워지지 않습니다 ( 해당 부분 : ClientManager :: CollectGarbageSessions)
disconnect된 즉시 클라측에서 접속을 해보았습니다.
그때 할당된 소켓의 번호가 132이었습니다.
그래서 아직 mClientList[132]가 지워지지 않는데, 또 132번의 소켓넘버를 가진 clientSession이 mClientList에 inesrt되었습니다.
현재 mClientList는 map(Dictionary), non multi value라서 이미 132의 값이 있어서 insert가 무시된 것 같습니다.
그 직후 RefCount가 0이 된 132의 session이 CollectGarbageSessions에 의해 제거되어서 mClintList.count가 0이 되었습니다.
요약 : 매우 짧은 시간에 재접속 했을 경우 같은 소켓번호로 들어온 ClintSession이 Manage되지 못하고 댕글링 포인터가 됨
Subin Park commented
dlakwwkd/CommitAgain@c9bc8d4
이렇게 해결해보았는데 괜찮은가요?
Simon Koo commented
유령세션 처리는 직접 해야함.