[fix] fix crash when try to close connection

This commit is contained in:
dijunkun
2025-03-24 17:40:44 +08:00
parent f52de76bfc
commit 334ab182db
3 changed files with 16 additions and 12 deletions

View File

@@ -120,15 +120,15 @@ int Render::ConnectTo(const std::string &host_name, const char *password,
if (signal_connected_) { if (signal_connected_) {
if (!props->connection_established_) { if (!props->connection_established_) {
if (0 == strcmp(host_name.c_str(), client_id_) && !peer_reserved_) { if (0 == strcmp(host_name.c_str(), client_id_) && !peer_reserved_) {
peer_reserved_ = CreatePeer(&params_);
if (peer_reserved_) {
LOG_INFO("Create peer[reserved] instance successful");
std::string client_id = "C-"; std::string client_id = "C-";
client_id += client_id_; client_id += client_id_;
peer_reserved_ = CreatePeer(&params_);
if (peer_reserved_) {
LOG_INFO("[{}] Create peer instance successful", client_id);
Init(peer_reserved_, client_id.c_str()); Init(peer_reserved_, client_id.c_str());
LOG_INFO("Peer[reserved] init finish"); LOG_INFO("[{}] Peer init finish", client_id);
} else { } else {
LOG_INFO("Create peer[reserved] instance failed"); LOG_INFO("Create peer [{}] instance failed", client_id);
} }
} }

View File

@@ -353,7 +353,7 @@ int Render::CreateConnectionPeer() {
Init(peer_, client_id_); Init(peer_, client_id_);
LOG_INFO("[{}] Peer init finish", client_id_); LOG_INFO("[{}] Peer init finish", client_id_);
} else { } else {
LOG_INFO("Create peer instance failed"); LOG_INFO("Create peer [{}] instance failed", client_id_);
} }
return 0; return 0;
@@ -855,12 +855,16 @@ int Render::Run() {
props->remember_password_ ? props->remote_password_ : ""); props->remember_password_ ? props->remote_password_ : "");
} }
LOG_INFO("[{}] Leave connection [{}]", client_id_, it.first);
LeaveConnection(peer_reserved_ ? peer_reserved_ : peer_,
it.first.c_str());
if (peer_reserved_) { if (peer_reserved_) {
LOG_INFO("Destroy peer[reserved]"); std::string client_id = "C-";
client_id += client_id_;
LOG_INFO("[{}] Leave connection [{}]", client_id, it.first);
LeaveConnection(peer_reserved_, it.first.c_str());
LOG_INFO("Destroy peer [{}]", client_id);
DestroyPeer(&peer_reserved_); DestroyPeer(&peer_reserved_);
} else {
LOG_INFO("[{}] Leave connection [{}]", client_id_, it.first);
LeaveConnection(peer_, it.first.c_str());
} }
props->streaming_ = false; props->streaming_ = false;
@@ -1078,7 +1082,7 @@ int Render::Run() {
LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_); LOG_INFO("[{}] Leave connection [{}]", client_id_, client_id_);
LeaveConnection(peer_, client_id_); LeaveConnection(peer_, client_id_);
is_client_mode_ = false; is_client_mode_ = false;
LOG_INFO("Destroy peer"); LOG_INFO("Destroy peer [{}]", client_id_);
DestroyPeer(&peer_); DestroyPeer(&peer_);
} }