diff --git a/server/imserver/player.cc b/server/imserver/player.cc index 02824c9..1631644 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -482,14 +482,16 @@ void Player::_CMGroupRename(f8::MsgHdr& hdr, const cs::CMGroupRename& msg) void Player::_SS_IM_FriendAgreeRequest(f8::MsgHdr& hdr, const ss::SS_IM_FriendAgreeRequest& msg) { if (!GetFriendById(msg.context().user_info().base_data().account_id())) { - Friend* friendobj = new Friend; - TypeConvert::Convert(msg.context().user_info().base_data(), friendobj->base_data); - TypeConvert::Convert(msg.context().user_info().temp_custom_data(), friendobj->temp_custom_data); - if (AddFriend(friendobj) != 0) { - delete friendobj; - return; + if (CanAddFriend(msg.context().user_info().base_data().account_id())) { + Friend* friendobj = new Friend; + TypeConvert::Convert(msg.context().user_info().base_data(), friendobj->base_data); + TypeConvert::Convert(msg.context().user_info().temp_custom_data(), friendobj->temp_custom_data); + if (AddFriend(friendobj) != 0) { + delete friendobj; + return; + } + QueryUserOnline({friendobj->base_data.account_id}); } - QueryUserOnline({friendobj->base_data.account_id}); } RemoveHandledApply(); f8::MsgHdr* hdr_copy = hdr.Clone();