Türkiye'nin ilk OldSchool MOBİL 1-99 Sunucusu Sezar2 9 Ekim'de Açılıyor! Rekor Açılışı Kaçırma! HEMEN TIKLA!
Kişi yaptığı işlerle meydana gelir ciddiye alabileceğim bir şey değil. Fırsatçılığı sevmiyorum m2 kültürünü bu hale getirenlerin başında meşale tutanları ise hiç hiç sevmiyorum tüylerim ürperiyor
Aynen
Düzenleme!
Desc.cpp'de şu düzenlemeyi yapmıştık hatırlarsanız.
Buradaki şu kısım :
Şu şekilde değişmelidir!
Gelen veriyi kimden geldiğine bakmadan kontrol ediyordu. Game sunucusu iki tür bağlantı kullanıyor ve bu satır ikisine de uygulanıyordu.
O zamanlar tam olarak konuya dikkatli yaklaşmadığımız için gözden kaçmış.
Desc.cpp'de şu düzenlemeyi yapmıştık hatırlarsanız.
Kod:
int DESC::ProcessInput()
{
if (!m_lpInputBuffer)
{
sys_err("DESC::ProcessInput : nil input buffer");
return -1;
}
const DWORD now = get_dword_time();
if (now - m_dwPacketTick >= 1000)
{
m_dwPacketTick = now;
m_iPacketCounter = 0;
}
if (++m_iPacketCounter > 256)
{
sys_err("DESC::ProcessInput: packet flood from %s", GetHostName());
return -1;
}
if (m_iPhase == PHASE_HANDSHAKE)
{
if (get_global_time() - m_dwConnectTime > 10)
{
sys_err("DESC::ProcessInput: handshake timeout %s", GetHostName());
return -1;
}
}
buffer_adjust_size(m_lpInputBuffer, m_iMinInputBufferLen);
ssize_t bytes_read = socket_read(
m_sock,
(char*)buffer_write_peek(m_lpInputBuffer),
buffer_has_space(m_lpInputBuffer)
);
if (bytes_read < 0)
return -1;
if (bytes_read == 0)
return 0;
buffer_write_proceed(m_lpInputBuffer, bytes_read);
if (buffer_size(m_lpInputBuffer) > (2 * 1024 * 1024))
{
sys_err("DESC::ProcessInput: input buffer too large (%u) from %s",
(unsigned)buffer_size(m_lpInputBuffer), GetHostName());
return -1;
}
if (!m_pInputProcessor)
{
sys_err("DESC::ProcessInput: no input processor");
return -1;
}
int iBytesProceed = 0;
while (!m_pInputProcessor->Process(
this,
buffer_read_peek(m_lpInputBuffer),
buffer_size(m_lpInputBuffer),
iBytesProceed))
{
// Infinite loop protection
if (iBytesProceed <= 0)
{
sys_err("DESC::ProcessInput: invalid proceed size %d from %s",
iBytesProceed, GetHostName());
return -1;
}
buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
iBytesProceed = 0;
}
if (iBytesProceed > 0)
buffer_read_proceed(m_lpInputBuffer, iBytesProceed);
return bytes_read;
}
Buradaki şu kısım :
Kod:
if (buffer_size(m_lpInputBuffer) > (2 * 1024 * 1024))
{
sys_err("DESC::ProcessInput: input buffer too large (%u) from %s",
(unsigned)buffer_size(m_lpInputBuffer), GetHostName());
return -1;
}
Şu şekilde değişmelidir!
Kod:
if (GetType() == DESC_TYPE_ACCEPTOR && !IsPhase(PHASE_P2P) && buffer_size(m_lpInputBuffer) > (2 * 1024 * 1024))
{
sys_err("DESC::ProcessInput: input buffer too large (%u) from %s",
(unsigned)buffer_size(m_lpInputBuffer), GetHostName());
return -1;
}
Gelen veriyi kimden geldiğine bakmadan kontrol ediyordu. Game sunucusu iki tür bağlantı kullanıyor ve bu satır ikisine de uygulanıyordu.
O zamanlar tam olarak konuya dikkatli yaklaşmadığımız için gözden kaçmış.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 343
- Cevaplar
- 36
- Görüntüleme
- 3K
- Cevaplar
- 13
- Görüntüleme
- 2K