Hi. I have a little server with some players, and at random times, they are all disconnected from only one core, and they cannot recconnect back. The other cores are working well. Don't get me wrong, the core don't crash, it only lose connection with players. When they try to reconnect, the following errors appear in syserr:
SYSERR: May 16 12:33:05.887662 :: Process: SEQUENCE 3d264c00 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:33:05.887680 :: Process: SEQUENCE_LOG [Skyzzo]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:33:48.168545 :: Process: SEQUENCE 3cad3400 mismatch 0xcf != 0x4 header 10
SYSERR: May 16 12:33:48.168561 :: Process: SEQUENCE_LOG [JokeroLLz]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:33:52.487872 :: Process: SEQUENCE 3cad3400 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:33:52.487887 :: Process: SEQUENCE_LOG [Ion]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:33:59.367570 :: Process: SEQUENCE 2b8d8400 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:33:59.367586 :: Process: SEQUENCE_LOG [L3auR]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:34:00.7637 :: Process: SEQUENCE 3cd9bc00 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:34:00.7653 :: Process: SEQUENCE_LOG [paradisss]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:34:15.847567 :: Process: SEQUENCE 2b8df800 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:34:15.847583 :: Process: SEQUENCE_LOG [AcmeJMK]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
SYSERR: May 16 12:34:19.527798 :: Process: SEQUENCE 3d198800 mismatch 0xcf != 0x0 header 10
SYSERR: May 16 12:34:19.527815 :: Process: SEQUENCE_LOG [FanaTicul]-------------
[109 : 0xaf]
[006 : 0xca]
[241 : 0x8a]
[010 : 0xcf]
The only thing i modified at packets is a new packet added by me. It is working well. I use 'mainline' as game and db, and 'mainline_released' as client binary.
I think this part of the source from input.cpp is kicking the players:
if (m_pPacketInfo->IsSequence(bHeader))
{
BYTE bSeq = lpDesc->GetSequence();
BYTE bSeqReceived = *(BYTE *) (c_pData + iPacketLen - sizeof(BYTE));
if (bSeq != bSeqReceived)
{
sys_err("SEQUENCE %x mismatch 0x%x != 0x%x header %u", get_pointer(lpDesc), bSeq, bSeqReceived, bHeader);
LPCHARACTER ch = lpDesc->GetCharacter();
char buf[1024];
int offset, len;
offset = snprintf(buf, sizeof(buf), "SEQUENCE_LOG [%s]-------------n", ch ? ch->GetName() : "UNKNOWN");
if (offset < 0 || offset >= (int) sizeof(buf))
offset = sizeof(buf) - 1;
for (size_t i = 0; i < lpDesc->m_seq_vector.size(); ++i)
{
len = snprintf(buf + offset, sizeof(buf) - offset, "t[%03d : 0x%x]n",
lpDesc->m_seq_vector[i].hdr,
lpDesc->m_seq_vector[i].seq);
if (len < 0 || len >= (int) sizeof(buf) - offset)
offset += (sizeof(buf) - offset) - 1;
else
offset += len;
}
snprintf(buf + offset, sizeof(buf) - offset, "t[%03d : 0x%x]n", bHeader, bSeq);
sys_err("%s", buf);
lpDesc->SetPhase(PHASE_CLOSE);
return true;
}
else
{
lpDesc->push_seq(bHeader, bSeq);
lpDesc->SetNextSequence();
//sys_err("SEQUENCE %x match %u next %u header %u", lpDesc, bSeq, lpDesc->GetSequence(), bHeader);
}
}
I was thinking to remove 'setphase(phase_close)' , but will this cause something to server?