diff --git a/server/wsproxy/downstream.cc b/server/wsproxy/downstream.cc index a9313e4..3576683 100644 --- a/server/wsproxy/downstream.cc +++ b/server/wsproxy/downstream.cc @@ -49,9 +49,7 @@ void DownStream::OnClose() ss::SS_WSP_SocketDisconnect msg; GetUpStream().lock()->SendMsg(socket_handle_, msg); } - if (auto long_session = long_session_wp_.lock(); !long_session_wp_.expired()) { - - } else { - + if (!long_session_wp_.expired()) { + LongSessionMgr::Instance()->DelSession(socket_handle_); } } diff --git a/server/wsproxy/longsessionmgr.cc b/server/wsproxy/longsessionmgr.cc index 2ed3725..77b8c13 100644 --- a/server/wsproxy/longsessionmgr.cc +++ b/server/wsproxy/longsessionmgr.cc @@ -88,3 +88,11 @@ void LongSessionMgr::ProcUdpPacket(a8::UdpPacket* pkt) session->GetKcpSession()->OnRecvPacket(pkt); } } + +void LongSessionMgr::DelSession(int socket_handle) +{ + { + auto sesion = GetSession(socket_handle); + } + socket_handle_hash_.erase(socket_handle); +} diff --git a/server/wsproxy/longsessionmgr.h b/server/wsproxy/longsessionmgr.h index 207aec2..0be1d50 100644 --- a/server/wsproxy/longsessionmgr.h +++ b/server/wsproxy/longsessionmgr.h @@ -30,6 +30,7 @@ class LongSessionMgr : public a8::Singleton void ProcUdpPacket(a8::UdpPacket* pkt); std::shared_ptr GetSession(int socket_handle); std::shared_ptr GetUdpListener() { return udp_listener_; } + void DelSession(int socket_handle); private: std::shared_ptr udp_listener_;