From 5e5eba196dc5663e2b4c490e95234e329757c9c7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 23 Jun 2020 14:25:39 +0800 Subject: [PATCH] 1 --- server/imserver/player.cc | 11 +++++++---- server/imserver/player.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/imserver/player.cc b/server/imserver/player.cc index 71525fa..0c7c92d 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -325,7 +325,7 @@ void Player::_CMFriendDelete(f8::MsgHdr& hdr, const cs::CMFriendDelete& msg) cs::SMFriendDelete respmsg; Friend* p = GetFriendById(msg.friend_id()); if (p) { - RemoveFriend(p->base_data.account_id); + RemoveFriend(p->base_data.account_id, true); } respmsg.set_friend_id(msg.friend_id()); SendMsg(respmsg); @@ -524,6 +524,7 @@ void Player::_SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAg void Player::_SS_IM_FriendDeleteRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendDeleteRequest& msg) { if (GetFriendById(msg.context().user_info().base_data().account_id())) { + RemoveFriend(msg.context().user_info().base_data().account_id(), false); } f8::MsgHdr* hdr_copy = hdr.Clone(); ss::SS_IM_FriendDeleteRequest* msg_copy = new ss::SS_IM_FriendDeleteRequest; @@ -804,7 +805,7 @@ int Player::AddFriend(Friend* friendobj) return -1; } -void Player::RemoveFriend(const std::string& account_id) +void Player::RemoveFriend(const std::string& account_id, bool need_sync) { Friend* friendobj = GetFriendById(account_id); if (friendobj) { @@ -813,7 +814,9 @@ void Player::RemoveFriend(const std::string& account_id) notifymsg.add_user_list(account_id); SendMsg(notifymsg); } - SyncHelper::Instance()->SyncDeleteFriend(this, friendobj->base_data.account_id); + if (need_sync) { + SyncHelper::Instance()->SyncDeleteFriend(this, friendobj->base_data.account_id); + } PlayerMgr::Instance()->UnWatchPlayer(friendobj); friend_hash_.erase(account_id); delete friendobj; @@ -1030,7 +1033,7 @@ void Player::OnFriendDeleteEvent(Event& event) if (!GetFriendById(event.sender_id)) { return; } - RemoveFriend(event.sender_id); + RemoveFriend(event.sender_id, false); } bool Player::CanAddFriend(const std::string& account_id) diff --git a/server/imserver/player.h b/server/imserver/player.h index 376c8c3..21a141e 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -119,7 +119,7 @@ private: ::google::protobuf::Message& msg); void InternalUpdateUserInfo(); int AddFriend(Friend* friendobj); - void RemoveFriend(const std::string& account_id); + void RemoveFriend(const std::string& account_id, bool need_sync); void PushFriendList(); void SyncOtherFriend(); void ProcessEventTimerFunc();