From ebe0c66a036ff159cf4bdbdcaf7a755c95aef83c Mon Sep 17 00:00:00 2001 From: David Athay Date: Wed, 14 May 2008 15:27:10 +0000 Subject: Added channel registration check to ensure that channel name is not in use --- ChangeLog | 7 +++++++ src/chat-server/chatchannelmanager.cpp | 5 +++++ src/chat-server/chatchannelmanager.hpp | 1 + src/chat-server/chathandler.cpp | 4 +++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 04deda07..bd2efa57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-14 David Athay + + * src/chat-server/chatchannelmanager.cpp, + src/chat-server/chatchannelmanager.hpp, + src/chat-server/chathandler.cpp: Added check to ensure channel name + not already in use. + 2008-05-08 Philipp Sehmisch * src/game-server/trigger.cpp, src/game-server/trigger.hpp, diff --git a/src/chat-server/chatchannelmanager.cpp b/src/chat-server/chatchannelmanager.cpp index 258b2d60..43cfdb44 100644 --- a/src/chat-server/chatchannelmanager.cpp +++ b/src/chat-server/chatchannelmanager.cpp @@ -135,6 +135,11 @@ bool ChatChannelManager::channelExists(int channelId) return mChatChannels.find(channelId) != mChatChannels.end(); } +bool ChatChannelManager::channelExists(const std::string &channelName) +{ + return getChannel(channelName) != NULL; +} + int ChatChannelManager::nextUsable() { int channelId = 0; diff --git a/src/chat-server/chatchannelmanager.hpp b/src/chat-server/chatchannelmanager.hpp index c6cbf5d7..86591606 100644 --- a/src/chat-server/chatchannelmanager.hpp +++ b/src/chat-server/chatchannelmanager.hpp @@ -103,6 +103,7 @@ class ChatChannelManager * @param channelId a channel ID */ bool channelExists(int channelId); + bool channelExists(const std::string &channelName); /** * Get next usable channel ID diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp index 423ee743..113ad1f8 100644 --- a/src/chat-server/chathandler.cpp +++ b/src/chat-server/chathandler.cpp @@ -339,7 +339,7 @@ ChatHandler::handleRegisterChannelMessage(ChatClient &client, MessageIn &msg) { reply.writeByte(ERRMSG_INVALID_ARGUMENT); } - else if (guildManager->doesExist(channelName)) + else if (guildManager->doesExist(channelName) || chatChannelManager->channelExists(channelName)) { // Channel already exists reply.writeByte(ERRMSG_ALREADY_TAKEN); @@ -835,6 +835,8 @@ void ChatHandler::sendGuildRejoin(ChatClient &client) client.send(msg); + sendGuildListUpdate(guildName, client.characterName); + } } -- cgit v1.2.3-70-g09d2