diff --git a/server/dbproxy/GSListener.cc b/server/dbproxy/GSListener.cc index 292dcfe..f2d53cb 100644 --- a/server/dbproxy/GSListener.cc +++ b/server/dbproxy/GSListener.cc @@ -12,6 +12,8 @@ #include "ss_proto.pb.h" #include "handlermgr.h" +const int PACK_MAX = 1024 * 1024 * 10; + class GSClientSession: public a8::MixedSession { public: @@ -24,10 +26,10 @@ public: is_activite = true; #endif bool warning = false; - while (buflen - offset >= sizeof(f8::PackHead)) { - f8::PackHead* p = (f8::PackHead*)&buf[offset]; + while (buflen - offset >= sizeof(f8::BigPackHead)) { + f8::BigPackHead* p = (f8::BigPackHead*)&buf[offset]; if (p->magic_code == f8::MAGIC_CODE) { - if (buflen - offset < sizeof(f8::PackHead) + p->packlen) { + if (buflen - offset < sizeof(f8::BigPackHead) + p->packlen) { break; } App::Instance()->AddSocketMsg(SF_GameServer, @@ -35,9 +37,9 @@ public: saddr, p->msgid, p->seqid, - &buf[offset + sizeof(f8::PackHead)], + &buf[offset + sizeof(f8::BigPackHead)], p->packlen); - offset += sizeof(f8::PackHead) + p->packlen; + offset += sizeof(f8::BigPackHead) + p->packlen; } else { warning = true; offset++; @@ -75,6 +77,7 @@ public: static void CreateGameClientSocket(a8::TcpSession **p) { *p = new GSClientSession(); + (*p)->SetMaxPacketLen(PACK_MAX); } static void GSListeneron_error(a8::TcpListener*, int type, int errorid) @@ -101,18 +104,18 @@ void GSListener::UnInit() void GSListener::ForwardTargetConnMsg(f8::MsgHdr& hdr) { - char* buff = (char*)malloc(sizeof(f8::PackHead) + hdr.buflen); - f8::PackHead* head = (f8::PackHead*)buff; + char* buff = (char*)malloc(sizeof(f8::BigPackHead) + hdr.buflen); + f8::BigPackHead* head = (f8::BigPackHead*)buff; head->packlen = hdr.buflen; head->msgid = hdr.msgid; head->seqid = hdr.seqid; head->magic_code = f8::MAGIC_CODE; head->rpc_error_code = 0; if (hdr.buflen > 0) { - memmove(buff + sizeof(f8::PackHead), hdr.buf, hdr.buflen); + memmove(buff + sizeof(f8::BigPackHead), hdr.buf, hdr.buflen); } - tcp_listener_->SendClientMsg(hdr.socket_handle, buff, sizeof(f8::PackHead) + head->packlen); + tcp_listener_->SendClientMsg(hdr.socket_handle, buff, sizeof(f8::BigPackHead) + head->packlen); free(buff); } diff --git a/third_party/a8engine b/third_party/a8engine index bc1e1e0..ff8c006 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit bc1e1e002cdfbbac07abdf14151afb0bbd8025a8 +Subproject commit ff8c00652d5367595c4adee8f95306ae1a46236b diff --git a/third_party/framework b/third_party/framework index 1813384..fd72ea5 160000 --- a/third_party/framework +++ b/third_party/framework @@ -1 +1 @@ -Subproject commit 18133846b6672634219c080064b7a24720d17588 +Subproject commit fd72ea56059dc8545920e33d436dad5a1d3700fb