From ed0290f7094c84db0efdcd0aa82f909d5c715730 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 23 Apr 2023 17:33:15 +0800 Subject: [PATCH] 1 --- server/tools/protobuild/ss_proto.proto | 10 ++++++---- server/wsproxy/app.cc | 1 + server/wsproxy/longsessionmgr.cc | 16 ++++++++++++++++ server/wsproxy/longsessionmgr.h | 6 ++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/server/tools/protobuild/ss_proto.proto b/server/tools/protobuild/ss_proto.proto index 72c9264..122b7f0 100644 --- a/server/tools/protobuild/ss_proto.proto +++ b/server/tools/protobuild/ss_proto.proto @@ -23,10 +23,12 @@ message SS_CMKcpHandshake message SS_SMKcpHandshake { - optional int32 conv = 1; //conv - optional bytes secret_key = 2; //secret eky - optional string remote_host = 3; //host - optional int32 remote_port = 4; //port + optional int32 errcode = 1; //errcode != 0时表示不支持kcp + optional string errmsg = 2; //errmsg + optional int32 conv = 3; //用来作为客户端的conv + optional bytes secret_key = 4; //secret key客户端每次上报的时候加在包头之前 + optional string remote_host = 5; //host + optional int32 remote_port = 6; //port } message SS_CMLogin diff --git a/server/wsproxy/app.cc b/server/wsproxy/app.cc index 583a6f0..bd37b65 100644 --- a/server/wsproxy/app.cc +++ b/server/wsproxy/app.cc @@ -409,6 +409,7 @@ void App::ProcessClientMsg(f8::MsgHdr& hdr) ss::SS_CMKcpHandshake msg; bool ok = msg.ParseFromArray(hdr.buf + hdr.offset, hdr.buflen - hdr.offset); if (ok) { + LongSessionMgr::Instance()->_SS_CMKcpHandshake(hdr, msg); } } break; diff --git a/server/wsproxy/longsessionmgr.cc b/server/wsproxy/longsessionmgr.cc index 459ccaa..3032997 100644 --- a/server/wsproxy/longsessionmgr.cc +++ b/server/wsproxy/longsessionmgr.cc @@ -2,6 +2,7 @@ #include +#include #include #include "longsessionmgr.h" @@ -10,6 +11,9 @@ #include "longsession.h" #include "kcpsession.h" +#include "ss_msgid.pb.h" +#include "ss_proto.pb.h" + static void GSUdpListeneron_error(int errorid) { f8::UdpLog::Instance()->Debug("GCUdpListeneron_error %d", {errorid}); @@ -44,6 +48,18 @@ void LongSessionMgr::Update() } } +void LongSessionMgr::_SS_CMKcpHandshake(f8::MsgHdr& hdr, const ss::SS_CMKcpHandshake& msg) +{ + ss::SS_SMKcpHandshake respmsg; + respmsg.set_errcode(0); + if (GetSession(hdr.socket_handle)) { +#ifdef DEBUG + abort(); +#endif + return; + } +} + std::shared_ptr LongSessionMgr::GetSession(int socket_handle) { auto itr = socket_handle_hash_.find(socket_handle); diff --git a/server/wsproxy/longsessionmgr.h b/server/wsproxy/longsessionmgr.h index a57409c..16b0ffb 100644 --- a/server/wsproxy/longsessionmgr.h +++ b/server/wsproxy/longsessionmgr.h @@ -8,6 +8,11 @@ namespace a8 struct UdpPacket; } +namespace ss +{ + class SS_CMKcpHandshake; +} + class LongSession; class LongSessionMgr : public a8::Singleton { @@ -21,6 +26,7 @@ class LongSessionMgr : public a8::Singleton void UnInit(); void Update(); + void _SS_CMKcpHandshake(f8::MsgHdr& hdr, const ss::SS_CMKcpHandshake& msg); void ProcUdpPacket(a8::UdpPacket* pkt); std::shared_ptr GetSession(int socket_handle);