diff --git a/server/wsproxy/app.cc b/server/wsproxy/app.cc index a7038e3..80e6bad 100644 --- a/server/wsproxy/app.cc +++ b/server/wsproxy/app.cc @@ -229,7 +229,8 @@ void App::AddSocketMsg(SocketFrom_e sockfrom, int bodylen, int tag) { - MsgNode *p = (MsgNode*)malloc(sizeof(MsgNode)); + char* buf = MMCache::Instance()->AllocSocketMsg(sizeof(MsgNode) + bodylen); + MsgNode *p = (MsgNode*)buf; memset(p, 0, sizeof(MsgNode)); p->sockfrom = sockfrom; p->ip_saddr = ip_saddr; @@ -240,7 +241,7 @@ void App::AddSocketMsg(SocketFrom_e sockfrom, p->buflen = bodylen; p->tag = tag; if (bodylen > 0) { - p->buf = (char*)malloc(bodylen); + p->buf = buf + sizeof(MsgNode); memmove(p->buf, msgbody, bodylen); } msg_mutex_->lock(); @@ -365,10 +366,7 @@ void App::DispatchMsg() } break; } - if (pdelnode->buf) { - free(pdelnode->buf); - } - free(pdelnode); + MMCache::Instance()->FreeSocketMsg((char*)pdelnode); working_msgnode_size_--; if (a8::XGetTickCount() - starttick > 200) { break; @@ -542,10 +540,7 @@ void App::FreeSocketMsgQueue() while (work_node_) { MsgNode* pdelnode = work_node_; work_node_ = work_node_->next; - if (pdelnode->buf) { - free(pdelnode->buf); - } - free(pdelnode); + MMCache::Instance()->FreeSocketMsg((char*)pdelnode); if (!work_node_) { work_node_ = top_node_; top_node_ = nullptr; @@ -571,7 +566,7 @@ void App::FreeUdpMsgQueue() free((void*)pdelnode->pkt->buf); } delete pdelnode->pkt; - free(pdelnode); + MMCache::Instance()->FreeUdpMsg((char*)pdelnode); } if (!udp_work_node_) { udp_work_node_ = udp_top_node_; @@ -584,7 +579,8 @@ void App::FreeUdpMsgQueue() void App::AddUdpMsg(a8::UdpPacket* pkt) { - UdpMsgNode *p = (UdpMsgNode*) malloc(sizeof(UdpMsgNode)); + char* buf = MMCache::Instance()->AllocUdpMsg(sizeof(UdpMsgNode)); + UdpMsgNode *p = (UdpMsgNode*)buf; memset(p, 0, sizeof(UdpMsgNode)); p->pkt = pkt; udp_msg_mutex_->lock(); @@ -621,7 +617,7 @@ void App::DispatchUdpMsg() free((void*)pdelnode->pkt->buf); } delete pdelnode->pkt; - free(pdelnode); + MMCache::Instance()->FreeUdpMsg((char*)pdelnode); } udp_working_msgnode_size_--; if (a8::XGetTickCount() - starttick > 200) {