Rewrote network stack, started working on porting to 64-bit
This commit is contained in:
@ -109,7 +109,7 @@ bool CBlockCountry::IsBlockedCountryIp(const char *user_ip)
|
||||
#ifndef __WIN32__
|
||||
if (0 == inet_aton(user_ip, &st_addr))
|
||||
#else
|
||||
unsigned long in_address;
|
||||
unsigned int in_address;
|
||||
in_address = inet_addr(user_ip);
|
||||
st_addr.s_addr = in_address;
|
||||
if (INADDR_NONE == in_address)
|
||||
|
@ -69,16 +69,16 @@ void CItemCache::OnFlush()
|
||||
}
|
||||
else
|
||||
{
|
||||
long alSockets[ITEM_SOCKET_MAX_NUM];
|
||||
int alSockets[ITEM_SOCKET_MAX_NUM];
|
||||
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
|
||||
bool isSocket = false, isAttr = false;
|
||||
|
||||
memset(&alSockets, 0, sizeof(long) * ITEM_SOCKET_MAX_NUM);
|
||||
memset(&alSockets, 0, sizeof(int) * ITEM_SOCKET_MAX_NUM);
|
||||
memset(&aAttr, 0, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM);
|
||||
|
||||
TPlayerItem * p = &m_data;
|
||||
|
||||
if (memcmp(alSockets, p->alSockets, sizeof(long) * ITEM_SOCKET_MAX_NUM))
|
||||
if (memcmp(alSockets, p->alSockets, sizeof(int) * ITEM_SOCKET_MAX_NUM))
|
||||
isSocket = true;
|
||||
|
||||
if (memcmp(aAttr, p->aAttr, sizeof(TPlayerItemAttribute) * ITEM_ATTRIBUTE_MAX_NUM))
|
||||
@ -100,9 +100,9 @@ void CItemCache::OnFlush()
|
||||
{
|
||||
iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2");
|
||||
iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
|
||||
", %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
|
||||
", %d, %d, %d", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
|
||||
iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,
|
||||
", socket0=%lu, socket1=%lu, socket2=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
|
||||
", socket0=%d, socket1=%d, socket2=%d", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
|
||||
}
|
||||
|
||||
if (isAttr)
|
||||
|
@ -58,7 +58,7 @@ static void AcceptConnection(
|
||||
CPeer* peer = clientManager->AddPeer(bev, address);
|
||||
|
||||
// Set the event handlers for this peer
|
||||
bufferevent_setcb(bev, ReadHandler, WriteHandler, EventHandler, peer);
|
||||
bufferevent_setcb(bev, DescReadHandler, DescWriteHandler, DescEventHandler, peer);
|
||||
|
||||
// Enable the events
|
||||
bufferevent_enable(bev, EV_READ|EV_WRITE);
|
||||
@ -73,7 +73,7 @@ static void AcceptError(evconnlistener *listener, void *ctx) {
|
||||
event_base_loopexit(base, NULL);
|
||||
}
|
||||
|
||||
static void ReadHandler(bufferevent *bev, void *ctx) {
|
||||
static void DescReadHandler(bufferevent *bev, void *ctx) {
|
||||
auto* peer = (CPeer*) ctx;
|
||||
|
||||
if (peer == CClientManager::Instance().GetAuthPeer())
|
||||
@ -83,7 +83,7 @@ static void ReadHandler(bufferevent *bev, void *ctx) {
|
||||
CClientManager::Instance().ProcessPackets(peer);
|
||||
}
|
||||
|
||||
static void WriteHandler(bufferevent *bev, void *ctx) {
|
||||
static void DescWriteHandler(bufferevent *bev, void *ctx) {
|
||||
auto* peer = (CPeer*) ctx;
|
||||
|
||||
if (peer == CClientManager::Instance().GetAuthPeer())
|
||||
@ -91,7 +91,7 @@ static void WriteHandler(bufferevent *bev, void *ctx) {
|
||||
sys_log(0, "AUTH_PEER_WRITE: size %d", peer->GetSendLength());
|
||||
}
|
||||
|
||||
static void EventHandler(bufferevent *bev, short events, void *ctx) {
|
||||
static void DescEventHandler(bufferevent *bev, short events, void *ctx) {
|
||||
auto* peer = (CPeer*) ctx;
|
||||
|
||||
if (events & BEV_EVENT_ERROR)
|
||||
@ -195,7 +195,6 @@ bool CClientManager::Initialize()
|
||||
strncpy(szBindIP, "0", sizeof(szBindIP));
|
||||
|
||||
// Create a new libevent base and listen for new connections
|
||||
event_enable_debug_mode();
|
||||
m_base = event_base_new();
|
||||
if (!m_base) {
|
||||
sys_err("Libevent base initialization FAILED!");
|
||||
@ -1717,8 +1716,8 @@ void CClientManager::QUERY_SMS(CPeer * pkPeer, TPacketGDSMS * pack)
|
||||
char szQuery[QUERY_MAX_LEN];
|
||||
|
||||
char szMsg[256+1];
|
||||
//unsigned long len = CDBManager::instance().EscapeString(szMsg, pack->szMsg, strlen(pack->szMsg), SQL_ACCOUNT);
|
||||
unsigned long len = CDBManager::instance().EscapeString(szMsg, pack->szMsg, strlen(pack->szMsg));
|
||||
//unsigned int len = CDBManager::instance().EscapeString(szMsg, pack->szMsg, strlen(pack->szMsg), SQL_ACCOUNT);
|
||||
unsigned int len = CDBManager::instance().EscapeString(szMsg, pack->szMsg, strlen(pack->szMsg));
|
||||
szMsg[len] = '\0';
|
||||
|
||||
snprintf(szQuery, sizeof(szQuery),
|
||||
|
@ -32,9 +32,9 @@ size_t CreatePlayerSaveQuery(char * pszQuery, size_t querySize, TPlayerTable * p
|
||||
|
||||
static void AcceptConnection(evconnlistener *listener, evutil_socket_t fd, sockaddr *address, int socklen, void *ctx);
|
||||
static void AcceptError(evconnlistener *listener, void *ctx);
|
||||
static void ReadHandler(bufferevent *bev, void *ctx);
|
||||
static void WriteHandler(bufferevent *bev, void *ctx);
|
||||
static void EventHandler(bufferevent *bev, short events, void *ctx);
|
||||
static void DescReadHandler(bufferevent *bev, void *ctx);
|
||||
static void DescWriteHandler(bufferevent *bev, void *ctx);
|
||||
static void DescEventHandler(bufferevent *bev, short events, void *ctx);
|
||||
|
||||
class CClientManager : public singleton<CClientManager>
|
||||
{
|
||||
@ -472,7 +472,7 @@ class CClientManager : public singleton<CClientManager>
|
||||
typedef std::map<BYTE, TPartyMap> TPartyChannelMap;
|
||||
TPartyChannelMap m_map_pkChannelParty;
|
||||
|
||||
typedef std::map<std::string, long> TEventFlagMap;
|
||||
typedef std::map<std::string, int> TEventFlagMap;
|
||||
TEventFlagMap m_map_lEventFlag;
|
||||
|
||||
BYTE m_bLastHeader;
|
||||
|
@ -160,7 +160,7 @@ size_t CreatePlayerSaveQuery(char * pszQuery, size_t querySize, TPlayerTable * p
|
||||
pkTab->horse_skill_point);
|
||||
|
||||
// Binary <20><> <20>ٲٱ<D9B2> <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
static char text[8192 + 1];
|
||||
char text[8192 + 1];
|
||||
|
||||
CDBManager::instance().EscapeString(text, pkTab->skills, sizeof(pkTab->skills));
|
||||
queryLen += snprintf(pszQuery + queryLen, querySize - queryLen, "skill_level = '%s', ", text);
|
||||
@ -794,14 +794,14 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
|
||||
{
|
||||
char queryStr[QUERY_MAX_LEN];
|
||||
int queryLen;
|
||||
int player_id;
|
||||
DWORD player_id;
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> X<><58> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
time_by_id_map_t::iterator it = s_createTimeByAccountID.find(packet->account_id);
|
||||
auto it = s_createTimeByAccountID.find(packet->account_id);
|
||||
|
||||
if (it != s_createTimeByAccountID.end())
|
||||
{
|
||||
time_t curtime = time(0);
|
||||
time_t curtime = time(nullptr);
|
||||
|
||||
if (curtime - it->second < 30)
|
||||
{
|
||||
@ -847,7 +847,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
|
||||
snprintf(queryStr, sizeof(queryStr),
|
||||
"SELECT COUNT(*) as count FROM player%s WHERE name='%s'", GetTablePostfix(), packet->player_table.name);
|
||||
|
||||
std::unique_ptr<SQLMsg> pMsg1(CDBManager::instance().DirectQuery(queryStr));
|
||||
std::unique_ptr<SQLMsg> pMsg1(CDBManager::instance().DirectQuery(queryStr));
|
||||
|
||||
if (pMsg1->Get()->uiNumRows)
|
||||
{
|
||||
@ -895,7 +895,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
|
||||
packet->player_table.ht,
|
||||
packet->player_table.job);
|
||||
|
||||
static char text[4096 + 1];
|
||||
char text[8192 + 1];
|
||||
|
||||
CDBManager::instance().EscapeString(text, packet->player_table.skills, sizeof(packet->player_table.skills));
|
||||
queryLen += snprintf(queryStr + queryLen, sizeof(queryStr) - queryLen, "'%s', ", text);
|
||||
|
@ -157,7 +157,7 @@ void CDBManager::AsyncQuery(const char * c_pszQuery, int iSlot)
|
||||
++g_query_count[1];
|
||||
}
|
||||
|
||||
unsigned long CDBManager::EscapeString(void *to, const void *from, unsigned long length, int iSlot)
|
||||
unsigned int CDBManager::EscapeString(void *to, const void *from, unsigned int length, int iSlot)
|
||||
{
|
||||
assert(iSlot < SQL_MAX_NUM);
|
||||
return mysql_real_escape_string(m_directSQL[iSlot]->GetSQLHandle(), (char *) to, (const char *) from, length);
|
||||
|
@ -49,7 +49,7 @@ class CDBManager : public singleton<CDBManager>
|
||||
SQLMsg * PopResult();
|
||||
SQLMsg * PopResult(eSQL_SLOT slot );
|
||||
|
||||
unsigned long EscapeString(void * to, const void * from, unsigned long length, int iSlot = SQL_PLAYER);
|
||||
unsigned int EscapeString(void * to, const void * from, unsigned int length, int iSlot = SQL_PLAYER);
|
||||
|
||||
DWORD CountReturnQuery(int i) { return m_mainSQL[i] ? m_mainSQL[i]->CountQuery() : 0; }
|
||||
DWORD CountReturnResult(int i) { return m_mainSQL[i] ? m_mainSQL[i]->CountResult() : 0; }
|
||||
|
@ -525,7 +525,7 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, long lWarPrice)
|
||||
void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, int lWarPrice)
|
||||
{
|
||||
sys_log(0, "GuildWar: RecvWarOver : winner %u vs %u draw? %d war_price %d", dwGuildWinner, dwGuildLoser, bDraw ? 1 : 0, lWarPrice);
|
||||
|
||||
@ -666,7 +666,7 @@ void CGuildManager::RemoveDeclare(DWORD guild_from, DWORD guild_to)
|
||||
sys_log(0, "GuildWar: RemoveDeclare(from:%d,to:%d)", guild_from, guild_to);
|
||||
}
|
||||
|
||||
bool CGuildManager::TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, long lWarPrice)
|
||||
bool CGuildManager::TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, int lWarPrice)
|
||||
{
|
||||
itertype(m_map_kGuild) it_from = m_map_kGuild.find(dwGuildFrom);
|
||||
itertype(m_map_kGuild) it_to = m_map_kGuild.find(dwGuildTo);
|
||||
@ -1023,7 +1023,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
|
||||
polyPower.SetVar("alv", alv);
|
||||
polyPower.SetVar("mc", mc);
|
||||
|
||||
t.lPowerFrom = (long) polyPower.Eval();
|
||||
t.lPowerFrom = (int) polyPower.Eval();
|
||||
sys_log(0, "GuildWar: %u lvp %d rkp %d alv %d mc %d power %d", GID1, lvp, rkp, alv, mc, t.lPowerFrom);
|
||||
|
||||
// <20>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
@ -1039,7 +1039,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
|
||||
polyPower.SetVar("alv", alv);
|
||||
polyPower.SetVar("mc", mc);
|
||||
|
||||
t.lPowerTo = (long) polyPower.Eval();
|
||||
t.lPowerTo = (int) polyPower.Eval();
|
||||
sys_log(0, "GuildWar: %u lvp %d rkp %d alv %d mc %d power %d", GID2, lvp, rkp, alv, mc, t.lPowerTo);
|
||||
|
||||
// <20>ڵ<EFBFBD>ĸ <20><><EFBFBD><EFBFBD>
|
||||
@ -1054,7 +1054,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
|
||||
polyHandicap.SetVar("pB", t.lPowerTo);
|
||||
}
|
||||
|
||||
t.lHandicap = (long) polyHandicap.Eval();
|
||||
t.lHandicap = (int) polyHandicap.Eval();
|
||||
sys_log(0, "GuildWar: handicap %d", t.lHandicap);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
@ -1062,7 +1062,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
|
||||
|
||||
snprintf(szQuery, sizeof(szQuery),
|
||||
"INSERT INTO guild_war_reservation (guild1, guild2, time, type, warprice, initscore, power1, power2, handicap) "
|
||||
"VALUES(%u, %u, DATE_ADD(NOW(), INTERVAL 180 SECOND), %u, %ld, %ld, %ld, %ld, %ld)",
|
||||
"VALUES(%u, %u, DATE_ADD(NOW(), INTERVAL 180 SECOND), %u, %d, %d, %d, %d, %d)",
|
||||
GID1, GID2, p->bType, p->lWarPrice, p->lInitialScore, t.lPowerFrom, t.lPowerTo, t.lHandicap);
|
||||
|
||||
std::unique_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery));
|
||||
|
@ -45,15 +45,15 @@ struct TGuildWaitStartInfo
|
||||
{
|
||||
BYTE bType;
|
||||
DWORD GID[2];
|
||||
long lWarPrice;
|
||||
long lInitialScore;
|
||||
int lWarPrice;
|
||||
int lInitialScore;
|
||||
CGuildWarReserve * pkReserve;
|
||||
|
||||
TGuildWaitStartInfo(BYTE _bType,
|
||||
DWORD _g1,
|
||||
DWORD _g2,
|
||||
long _lWarPrice,
|
||||
long _lInitialScore,
|
||||
int _lWarPrice,
|
||||
int _lInitialScore,
|
||||
CGuildWarReserve * _pkReserve)
|
||||
: bType(_bType), lWarPrice(_lWarPrice), lInitialScore(_lInitialScore), pkReserve(_pkReserve)
|
||||
{
|
||||
@ -180,12 +180,12 @@ class CGuildManager : public singleton<CGuildManager>
|
||||
void AddDeclare(BYTE bType, DWORD guild_from, DWORD guild_to);
|
||||
void RemoveDeclare(DWORD guild_from, DWORD guild_to);
|
||||
|
||||
bool TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, long lWarPrice);
|
||||
bool TakeBetPrice(DWORD dwGuildTo, DWORD dwGuildFrom, int lWarPrice);
|
||||
|
||||
bool WaitStart(TPacketGuildWar * p);
|
||||
|
||||
void RecvWarEnd(DWORD GID1, DWORD GID2);
|
||||
void RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, long lWarPrice);
|
||||
void RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, int lWarPrice);
|
||||
|
||||
void ChangeLadderPoint(DWORD GID, int change);
|
||||
|
||||
|
@ -103,12 +103,12 @@ bool CLoginData::IsDeleted()
|
||||
return m_bDeleted;
|
||||
}
|
||||
|
||||
void CLoginData::SetPremium(int * paiPremiumTimes)
|
||||
void CLoginData::SetPremium(DWORD * paiPremiumTimes)
|
||||
{
|
||||
memcpy(m_aiPremiumTimes, paiPremiumTimes, sizeof(m_aiPremiumTimes));
|
||||
}
|
||||
|
||||
int CLoginData::GetPremium(BYTE type)
|
||||
DWORD CLoginData::GetPremium(BYTE type)
|
||||
{
|
||||
if (type >= PREMIUM_MAX_NUM)
|
||||
return 0;
|
||||
@ -116,7 +116,7 @@ int CLoginData::GetPremium(BYTE type)
|
||||
return m_aiPremiumTimes[type];
|
||||
}
|
||||
|
||||
int * CLoginData::GetPremiumPtr()
|
||||
DWORD * CLoginData::GetPremiumPtr()
|
||||
{
|
||||
return &m_aiPremiumTimes[0];
|
||||
}
|
||||
|
@ -37,9 +37,9 @@ class CLoginData
|
||||
|
||||
time_t GetLastPlayTime() { return m_lastPlayTime; }
|
||||
|
||||
void SetPremium(int * paiPremiumTimes);
|
||||
int GetPremium(BYTE type);
|
||||
int * GetPremiumPtr();
|
||||
void SetPremium(DWORD * paiPremiumTimes);
|
||||
DWORD GetPremium(BYTE type);
|
||||
DWORD * GetPremiumPtr();
|
||||
|
||||
DWORD GetLastPlayerID() const { return m_dwLastPlayerID; }
|
||||
void SetLastPlayerID(DWORD id) { m_dwLastPlayerID = id; }
|
||||
@ -56,7 +56,7 @@ class CLoginData
|
||||
BYTE m_bBillType;
|
||||
DWORD m_dwBillID;
|
||||
time_t m_lastPlayTime;
|
||||
int m_aiPremiumTimes[PREMIUM_MAX_NUM];
|
||||
DWORD m_aiPremiumTimes[PREMIUM_MAX_NUM];
|
||||
|
||||
DWORD m_dwLastPlayerID;
|
||||
|
||||
|
@ -113,7 +113,7 @@ void CPeer::SetP2PPort(WORD wPort)
|
||||
m_wP2PPort = wPort;
|
||||
}
|
||||
|
||||
void CPeer::SetMaps(long * pl)
|
||||
void CPeer::SetMaps(LONG * pl)
|
||||
{
|
||||
memcpy(m_alMaps, pl, sizeof(m_alMaps));
|
||||
}
|
||||
|
@ -50,8 +50,8 @@ class CPeer : public CPeerBase
|
||||
void SetP2PPort(WORD wPort);
|
||||
WORD GetP2PPort() { return m_wP2PPort; }
|
||||
|
||||
void SetMaps(long* pl);
|
||||
long * GetMaps() { return &m_alMaps[0]; }
|
||||
void SetMaps(LONG* pl);
|
||||
LONG * GetMaps() { return &m_alMaps[0]; }
|
||||
|
||||
bool SetItemIDRange(TItemIDRangeTable itemRange);
|
||||
bool SetSpareItemIDRange(TItemIDRangeTable itemRange);
|
||||
@ -66,7 +66,7 @@ class CPeer : public CPeerBase
|
||||
DWORD m_dwUserCount;
|
||||
WORD m_wListenPort; // <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> listen <20>ϴ<EFBFBD> <20><>Ʈ
|
||||
WORD m_wP2PPort; // <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> P2P <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> listen <20>ϴ<EFBFBD> <20><>Ʈ
|
||||
long m_alMaps[32]; // <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ°<D6B4>?
|
||||
LONG m_alMaps[32]; // <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ°<D6B4>?
|
||||
|
||||
TItemIDRangeTable m_itemRange;
|
||||
TItemIDRangeTable m_itemSpareRange;
|
||||
|
Reference in New Issue
Block a user