diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index 0a7de0b..38c73dc 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -550,8 +550,14 @@ void Guild::_CMGuildChange(f8::MsgHdr& hdr, const cs::CMGuildChange& msg) ss::SS_IM_ForwardGuildCMMsg *forward_msg_copy = (ss::SS_IM_ForwardGuildCMMsg*)param.param1.GetUserData(); cs::CMGuildChange* msg_copy = (cs::CMGuildChange*)param.param3.GetUserData(); Guild* guild = GuildMgr::Instance()->GetGuild(param.sender); - if (guild) { - guild->GuildRenameCb(param.param2, forward_msg_copy->context(), *msg_copy); + if (guild && data.GetType() == a8::XOT_OBJECT) { + if (data.HasKey("errcode") && data.At("errcode")->AsXValue().GetInt() == 0) { + guild->GuildRenameCb(param.param2, forward_msg_copy->context(), *msg_copy); + } else { + guild->SendErrorMsg(param.param2, + forward_msg_copy->context(), + data.Get("errmsg", "服务器内部错误")); + } } delete msg_copy; delete forward_msg_copy;