aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2014_09_12_03_world_gameobject_template.sql3
-rw-r--r--src/server/game/Server/WorldSocket.cpp4
-rw-r--r--src/server/game/Server/WorldSocket.h3
-rw-r--r--src/server/shared/Networking/MessageBuffer.h2
-rw-r--r--src/server/shared/Networking/Socket.h3
5 files changed, 10 insertions, 5 deletions
diff --git a/sql/updates/world/2014_09_12_03_world_gameobject_template.sql b/sql/updates/world/2014_09_12_03_world_gameobject_template.sql
new file mode 100644
index 00000000000..3771dd7c7dc
--- /dev/null
+++ b/sql/updates/world/2014_09_12_03_world_gameobject_template.sql
@@ -0,0 +1,3 @@
+--
+UPDATE `gameobject_template` SET `flags`=4 WHERE `entry`=201937; -- Light's Vengeance
+UPDATE `gameobject_template` SET `flags`=32 WHERE `entry`=201759; -- The Forge of Souls Portcullis
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 6cf406f21fa..cb42732b464 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -131,7 +131,7 @@ bool WorldSocket::ReadHeaderHandler()
EndianConvertReverse(header->size);
EndianConvert(header->cmd);
- if (!header->IsValid())
+ if (!header->IsValidSize() || !header->IsValidOpcode())
{
if (_worldSession)
{
@@ -141,7 +141,7 @@ bool WorldSocket::ReadHeaderHandler()
}
else
TC_LOG_ERROR("network", "WorldSocket::ReadHeaderHandler(): client %s sent malformed packet (size: %hu, cmd: %u)",
- GetRemoteIpAddress().to_string().c_str(), header->size, header->cmd);
+ GetRemoteIpAddress().to_string().c_str(), header->size, header->cmd);
CloseSocket();
return false;
diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h
index 6ba76584909..46614afd3bd 100644
--- a/src/server/game/Server/WorldSocket.h
+++ b/src/server/game/Server/WorldSocket.h
@@ -39,7 +39,8 @@ struct ClientPktHeader
uint16 size;
uint32 cmd;
- bool IsValid() const { return size >= 4 && size < 10240 && cmd < NUM_OPCODE_HANDLERS; }
+ bool IsValidSize() const { return size >= 4 && size < 10240; }
+ bool IsValidOpcode() const { return cmd < NUM_OPCODE_HANDLERS; }
};
#pragma pack(pop)
diff --git a/src/server/shared/Networking/MessageBuffer.h b/src/server/shared/Networking/MessageBuffer.h
index 2115bea3f47..2dcd4fbc161 100644
--- a/src/server/shared/Networking/MessageBuffer.h
+++ b/src/server/shared/Networking/MessageBuffer.h
@@ -81,7 +81,7 @@ public:
}
}
- void Write(void* data, std::size_t size)
+ void Write(void const* data, std::size_t size)
{
if (size)
{
diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h
index 17f48343485..6aa7974b1c1 100644
--- a/src/server/shared/Networking/Socket.h
+++ b/src/server/shared/Networking/Socket.h
@@ -111,11 +111,12 @@ public:
void QueuePacket(MessageBuffer&& buffer, std::unique_lock<std::mutex>& guard)
{
-
_writeQueue.push(std::move(buffer));
#ifdef BOOST_ASIO_HAS_IOCP
AsyncProcessQueue(guard);
+#else
+ (void)guard;
#endif
}