aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/authserver/Main.cpp2
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp2
-rw-r--r--src/server/game/Handlers/MailHandler.cpp11
3 files changed, 11 insertions, 4 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp
index be2e6a11d4f..2daf01c2fc8 100644
--- a/src/server/authserver/Main.cpp
+++ b/src/server/authserver/Main.cpp
@@ -115,7 +115,7 @@ extern int main(int argc, char** argv)
TC_LOG_INFO("server.authserver", "<Ctrl-C> to stop.\n");
TC_LOG_INFO("server.authserver", "Using configuration file %s.", configFile);
- TC_LOG_WARN("server.authserver", "%s (Library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
+ TC_LOG_INFO("server.authserver", "%s (Library: %s)", OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION));
#if defined (ACE_HAS_EVENT_POLL) || defined (ACE_HAS_DEV_POLL)
ACE_Reactor::instance(new ACE_Reactor(new ACE_Dev_Poll_Reactor(ACE::max_handles(), 1), 1), true);
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index c6a2c578c8f..3a171c3c23b 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2293,7 +2293,7 @@ void Creature::AllLootRemovedFromCorpse()
else
m_corpseRemoveTime = now + m_corpseDelay * decayRate;
- m_respawnTime = m_corpseRemoveTime + m_respawnTime;
+ m_respawnTime = m_corpseRemoveTime + m_respawnDelay;
}
uint8 Creature::getLevelForTarget(WorldObject const* target) const
diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp
index 3c4e5feb771..10b7541f5dd 100644
--- a/src/server/game/Handlers/MailHandler.cpp
+++ b/src/server/game/Handlers/MailHandler.cpp
@@ -406,7 +406,7 @@ void WorldSession::HandleMailMarkAsRead(WorldPacket& recvData)
Player* player = _player;
Mail* m = player->GetMail(mailId);
- if (m)
+ if (m && m->state != MAIL_STATE_DELETED)
{
if (player->unReadMails)
--player->unReadMails;
@@ -523,6 +523,13 @@ void WorldSession::HandleMailTakeItem(WorldPacket& recvData)
return;
}
+ // verify that the mail has the item to avoid cheaters taking COD items without paying
+ if (std::find_if(m->items.begin(), m->items.end(), [itemId](MailItemInfo info){ return info.item_guid == itemId; }) == m->items.end())
+ {
+ player->SendMailResult(mailId, MAIL_ITEM_TAKEN, MAIL_ERR_INTERNAL_ERROR);
+ return;
+ }
+
// prevent cheating with skip client money check
if (!player->HasEnoughMoney(uint64(m->COD)))
{
@@ -776,7 +783,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket& recvData)
Player* player = _player;
Mail* m = player->GetMail(mailId);
- if (!m || (m->body.empty() && !m->mailTemplateId) || m->state == MAIL_STATE_DELETED || m->deliver_time > time(NULL))
+ if (!m || (m->body.empty() && !m->mailTemplateId) || m->state == MAIL_STATE_DELETED || m->deliver_time > time(NULL) || (m->checked & MAIL_CHECK_MASK_COPIED))
{
player->SendMailResult(mailId, MAIL_MADE_PERMANENT, MAIL_ERR_INTERNAL_ERROR);
return;