diff --git a/server/wsproxy/kcpsession.cc b/server/wsproxy/kcpsession.cc index efe4b3d..3010fc3 100644 --- a/server/wsproxy/kcpsession.cc +++ b/server/wsproxy/kcpsession.cc @@ -95,12 +95,17 @@ void KcpSession::DecodeUserPacket(char* buf, int& offset, unsigned int buflen) //2 + 2 + 4+ xx + \0 + xx bool warning = false; while (buflen - offset >= sizeof(f8::PackHead) + GetSecretKeyLen()) { + long long secret_key = KcpSession::ReadSecretKey(&buf[offset], buflen); + if (secret_key != secret_key_) { + warning = true; + offset++; + continue; + } f8::PackHead* p = (f8::PackHead*)&buf[offset + GetSecretKeyLen()]; if (p->magic_code == f8::MAGIC_CODE) { if (buflen - offset < sizeof(f8::PackHead) + p->packlen + GetSecretKeyLen()) { break; } - //a8::XPrintf("Recv MsgId:%d\n", {p->msgid}); App::Instance()->AddSocketMsg(SF_Client, socket_handle_, 0, diff --git a/server/wsproxy/longsessionmgr.cc b/server/wsproxy/longsessionmgr.cc index 3869243..4a2adac 100644 --- a/server/wsproxy/longsessionmgr.cc +++ b/server/wsproxy/longsessionmgr.cc @@ -128,6 +128,8 @@ void LongSessionMgr::ProcUdpPacket(a8::UdpPacket* pkt) }); return; } + session->GetKcpSession()->OnRecvPacket(pkt); +#if 0 if (pkt->buf_len > IKCP_OVERHEAD + KcpSession::GetSecretKeyLen()) { long long secret_key = KcpSession::ReadSecretKey(pkt->buf + IKCP_OVERHEAD, pkt->buf_len); if (secret_key == session->GetKcpSession()->GetSecretKey()) { @@ -149,6 +151,7 @@ void LongSessionMgr::ProcUdpPacket(a8::UdpPacket* pkt) pkt->buf_len }); } +#endif } void LongSessionMgr::DelSession(int socket_handle)