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) {