diff --git a/server/imserver/guild.cc b/server/imserver/guild.cc index f504d5d..1a3adeb 100644 --- a/server/imserver/guild.cc +++ b/server/imserver/guild.cc @@ -481,32 +481,34 @@ void Guild::_CMGuildDismiss(f8::MsgHdr& hdr, const cs::CMGuildDismiss& msg) void Guild::_CMGuildChange(f8::MsgHdr& hdr, const cs::CMGuildChange& msg) { ss::SS_IM_ForwardGuildCMMsg *forward_msg = (ss::SS_IM_ForwardGuildCMMsg*)hdr.user_data; + if ((!msg.has_guild_name() || msg.guild_name() == guild_name_) && + (!msg.has_guild_declaration() || msg.guild_declaration() == guild_declaration_)) { + if (msg.has_guild_name()) { + guild_name_ = msg.guild_name(); + } + if (msg.has_guild_badge()) { + guild_badge_ = msg.guild_badge(); + } + if (msg.has_guild_declaration()) { + guild_declaration_ = msg.guild_declaration(); + } + if (msg.has_join_unlimited()) { + join_unlimited_ = msg.join_unlimited(); + } + if (msg.has_join_cond1()) { + join_cond1_ = msg.join_cond1(); + } + if (msg.has_join_cond2()) { + join_cond2_ = msg.join_cond2(); + } - if (msg.has_guild_name()) { - guild_name_ = msg.guild_name(); + cs::SMGuildChange respmsg; + FillGuildBasic(respmsg.mutable_info()); + GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, + forward_msg->context(), + respmsg); + MarkDirty(); } - if (msg.has_guild_badge()) { - guild_badge_ = msg.guild_badge(); - } - if (msg.has_guild_declaration()) { - guild_declaration_ = msg.guild_declaration(); - } - if (msg.has_join_unlimited()) { - join_unlimited_ = msg.join_unlimited(); - } - if (msg.has_join_cond1()) { - join_cond1_ = msg.join_cond1(); - } - if (msg.has_join_cond2()) { - join_cond2_ = msg.join_cond2(); - } - - cs::SMGuildChange respmsg; - FillGuildBasic(respmsg.mutable_info()); - GuildMgr::Instance()->ForwardGuildSMMsg(hdr.socket_handle, - forward_msg->context(), - respmsg); - MarkDirty(); } void Guild::_CMGuildMemberList(f8::MsgHdr& hdr, const cs::CMGuildMemberList& msg)