forked from metin2/server
1
0
Fork 0

Eliminated hardcoded allowed map limit, added and increased the limit in length.h

This commit is contained in:
Exynox 2023-12-09 19:16:41 +02:00
parent da120f69e0
commit 99935d6cff
6 changed files with 12 additions and 5 deletions

View File

@ -19,6 +19,7 @@ enum EMisc
SMS_MAX_LEN = 80, SMS_MAX_LEN = 80,
MOBILE_MAX_LEN = 32, MOBILE_MAX_LEN = 32,
SOCIAL_ID_MAX_LEN = 18, SOCIAL_ID_MAX_LEN = 18,
MAP_ALLOW_MAX_LEN = 128,
GUILD_NAME_MAX_LEN = 12, GUILD_NAME_MAX_LEN = 12,

View File

@ -761,7 +761,7 @@ typedef struct SPacketGDSetup
BYTE bChannel; // 채널 BYTE bChannel; // 채널
WORD wListenPort; // 클라이언트가 접속하는 포트 번호 WORD wListenPort; // 클라이언트가 접속하는 포트 번호
WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호 WORD wP2PPort; // 서버끼리 연결 시키는 P2P 포트 번호
LONG alMaps[32]; LONG alMaps[MAP_ALLOW_MAX_LEN];
DWORD dwLoginCount; DWORD dwLoginCount;
BYTE bAuthServer; BYTE bAuthServer;
} TPacketGDSetup; } TPacketGDSetup;
@ -773,7 +773,7 @@ typedef struct SPacketDGMapLocations
typedef struct SMapLocation typedef struct SMapLocation
{ {
LONG alMaps[32]; LONG alMaps[MAP_ALLOW_MAX_LEN];
char szHost[MAX_HOST_LENGTH + 1]; char szHost[MAX_HOST_LENGTH + 1];
WORD wPort; WORD wPort;
} TMapLocation; } TMapLocation;

View File

@ -66,7 +66,7 @@ class CPeer : public CPeerBase
DWORD m_dwUserCount; DWORD m_dwUserCount;
WORD m_wListenPort; // 게임서버가 클라이언트를 위해 listen 하는 포트 WORD m_wListenPort; // 게임서버가 클라이언트를 위해 listen 하는 포트
WORD m_wP2PPort; // 게임서버가 게임서버 P2P 접속을 위해 listen 하는 포트 WORD m_wP2PPort; // 게임서버가 게임서버 P2P 접속을 위해 listen 하는 포트
LONG m_alMaps[32]; // 어떤 맵을 관장하고 있는가? LONG m_alMaps[MAP_ALLOW_MAX_LEN]; // 어떤 맵을 관장하고 있는가?
TItemIDRangeTable m_itemRange; TItemIDRangeTable m_itemRange;
TItemIDRangeTable m_itemSpareRange; TItemIDRangeTable m_itemSpareRange;

View File

@ -172,6 +172,12 @@ void map_allow_add(int index)
exit(1); exit(1);
} }
if (s_set_map_allows.size() >= MAP_ALLOW_MAX_LEN)
{
fprintf(stdout, "Fatal error: maximum allowed maps reached!\n");
exit(1);
}
fprintf(stdout, "MAP ALLOW %d\n", index); fprintf(stdout, "MAP ALLOW %d\n", index);
s_set_map_allows.insert(index); s_set_map_allows.insert(index);
} }

View File

@ -180,7 +180,7 @@ void CLIENT_DESC::SetPhase(int iPhase)
p.wListenPort = mother_port; p.wListenPort = mother_port;
p.wP2PPort = p2p_port; p.wP2PPort = p2p_port;
p.bAuthServer = false; p.bAuthServer = false;
map_allow_copy(p.alMaps, 32); map_allow_copy(p.alMaps, MAP_ALLOW_MAX_LEN);
const DESC_MANAGER::DESC_SET & c_set = DESC_MANAGER::instance().GetClientSet(); const DESC_MANAGER::DESC_SET & c_set = DESC_MANAGER::instance().GetClientSet();
DESC_MANAGER::DESC_SET::const_iterator it; DESC_MANAGER::DESC_SET::const_iterator it;

View File

@ -1312,7 +1312,7 @@ void CInputDB::MapLocations(const char * c_pData)
while (bCount--) while (bCount--)
{ {
for (int i = 0; i < 32; ++i) for (int i = 0; i < MAP_ALLOW_MAX_LEN; ++i)
{ {
if (0 == pLoc->alMaps[i]) if (0 == pLoc->alMaps[i])
break; break;