From d69565b45029f3a3bc27bfe6d090e0005562e93d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 7 Aug 2018 20:43:03 +0800 Subject: [PATCH] 1 --- server/wsproxy/GCListener.cc | 5 ++++- server/wsproxy/app.cc | 3 +++ server/wsproxy/target_conn.cc | 8 ++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/server/wsproxy/GCListener.cc b/server/wsproxy/GCListener.cc index e284eb8..9677e7e 100644 --- a/server/wsproxy/GCListener.cc +++ b/server/wsproxy/GCListener.cc @@ -105,8 +105,11 @@ void GCListener::ForwardTargetConnMsg(MsgHdr& hdr) #if 1 head->rpc_error_code = hdr.ip_saddr; #endif + if (hdr.buflen > 0) { + memmove(buff + sizeof(PackHead), hdr.buf, hdr.buflen); + } - tcp_listener_->SendClientMsg(hdr.socket_handle, buff, sizeof(PackHead*) + head->packlen); + tcp_listener_->SendClientMsg(hdr.socket_handle, buff, sizeof(PackHead) + head->packlen); free(buff); } diff --git a/server/wsproxy/app.cc b/server/wsproxy/app.cc index 0864ffc..777169c 100644 --- a/server/wsproxy/app.cc +++ b/server/wsproxy/app.cc @@ -281,6 +281,7 @@ void App::DispatchMsg() MsgNode *pdelnode = work_node_; work_node_ = pdelnode->next; hdr.msgid = pdelnode->msgid; + hdr.seqid = pdelnode->seqid; hdr.socket_handle = pdelnode->sockhandle; hdr.buf = pdelnode->buf; hdr.buflen = pdelnode->buflen; @@ -347,8 +348,10 @@ void App::ProcessTargetServerMsg(MsgHdr& hdr) return; } if (hdr.msgid == ss::_SS_CMLogin || hdr.msgid == ss::_SS_CMReConnect) { + #if 0 GameClientMgr::Instance()->BindTargetConn(hdr.socket_handle, hdr.ip_saddr); GCListener::Instance()->MarkClient(hdr.socket_handle, true); + #endif } GCListener::Instance()->ForwardTargetConnMsg(hdr); } diff --git a/server/wsproxy/target_conn.cc b/server/wsproxy/target_conn.cc index 0ec6d74..82e4228 100644 --- a/server/wsproxy/target_conn.cc +++ b/server/wsproxy/target_conn.cc @@ -78,7 +78,11 @@ void TargetConn::ForwardClientMsg(MsgHdr& hdr) head->socket_handle = hdr.socket_handle; head->ip_saddr = hdr.ip_saddr; - tcp_client_->SendBuff(buff, sizeof(WSProxyPackHead_C*) + head->packlen); + if (hdr.buflen > 0) { + memmove(buff + sizeof(WSProxyPackHead_C), hdr.buf, hdr.buflen); + } + + tcp_client_->SendBuff(buff, sizeof(WSProxyPackHead_C) + head->packlen); free(buff); } @@ -119,7 +123,7 @@ void TargetConn::on_socketread(a8::TcpClient* sender, char* buf, unsigned int le bool warning = false; unsigned int offset = 0; - while (recv_bufflen_ - offset > sizeof(WSProxyPackHead_S)) { + while (recv_bufflen_ - offset >= sizeof(WSProxyPackHead_S)) { WSProxyPackHead_S* p = (WSProxyPackHead_S*) &recv_buff_[offset]; if (p->magic_code == MAGIC_CODE) { if (recv_bufflen_ - offset < sizeof(PackHead) + p->packlen) {