diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index a2217dbfd..d09c1d816 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -237,6 +237,13 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) return; } + // handle empty bag before CanBeTraded, since that func already has that check + if (item->IsNotEmptyBag()) + { + player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS); + return; + } + if (!item->CanBeTraded(true)) { player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_MAIL_BOUND_ITEM); @@ -261,12 +268,6 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) return; } - if (item->IsNotEmptyBag()) - { - player->SendMailResult(0, MAIL_SEND, MAIL_ERR_EQUIP_ERROR, EQUIP_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS); - return; - } - if (!sScriptMgr->CanSendMail(player, receiverGuid, mailbox, subject, body, money, COD, item)) { player->SendMailResult(0, MAIL_SEND, MAIL_ERR_INTERNAL_ERROR);