diff options
Diffstat (limited to 'cast/common/channel/virtual_connection_router.cc')
-rw-r--r-- | cast/common/channel/virtual_connection_router.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/cast/common/channel/virtual_connection_router.cc b/cast/common/channel/virtual_connection_router.cc index fbec2054..47650447 100644 --- a/cast/common/channel/virtual_connection_router.cc +++ b/cast/common/channel/virtual_connection_router.cc @@ -37,14 +37,16 @@ bool VirtualConnectionRouter::RemoveHandlerForLocalId( void VirtualConnectionRouter::TakeSocket(SocketErrorHandler* error_handler, std::unique_ptr<CastSocket> socket) { - uint32_t id = socket->socket_id(); + int32_t id = socket->socket_id(); socket->SetClient(this); sockets_.emplace(id, SocketWithHandler{std::move(socket), error_handler}); } -void VirtualConnectionRouter::CloseSocket(uint32_t id) { +void VirtualConnectionRouter::CloseSocket(int32_t id) { auto it = sockets_.find(id); if (it != sockets_.end()) { + vc_manager_->RemoveConnectionsBySocketId( + id, VirtualConnection::kTransportClosed); std::unique_ptr<CastSocket> socket = std::move(it->second.socket); SocketErrorHandler* error_handler = it->second.error_handler; sockets_.erase(it); @@ -69,9 +71,10 @@ Error VirtualConnectionRouter::SendMessage(VirtualConnection virtual_conn, } void VirtualConnectionRouter::OnError(CastSocket* socket, Error error) { - uint32_t id = socket->socket_id(); + int32_t id = socket->socket_id(); auto it = sockets_.find(id); if (it != sockets_.end()) { + vc_manager_->RemoveConnectionsBySocketId(id, VirtualConnection::kUnknown); std::unique_ptr<CastSocket> socket_owned = std::move(it->second.socket); SocketErrorHandler* error_handler = it->second.error_handler; sockets_.erase(it); |