From: Matze B. <mat...@us...> - 2002-04-28 19:44:37
|
Update of /cvsroot/planeshift/planeshift/src/common/net In directory usw-pr-cvs1:/tmp/cvs-serv24012 Modified Files: msghandler.cpp netbase.cpp Log Message: fixed a BIG memory leak: MsgHandler wasn't deleteing network packets Index: msghandler.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/msghandler.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** msghandler.cpp 7 Apr 2002 03:06:56 -0000 1.22 --- msghandler.cpp 27 Apr 2002 17:24:45 -0000 1.23 *************** *** 139,142 **** --- 139,144 ---- { This->Publish(msg); + // don't forget to delete the packet + msg->DecRef(); if (This->queue->IsEmpty()) // don't sleep if queue not empty task::sleep(20); Index: netbase.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/common/net/netbase.cpp,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** netbase.cpp 26 Apr 2002 14:18:18 -0000 1.66 --- netbase.cpp 27 Apr 2002 17:24:45 -0000 1.67 *************** *** 130,133 **** --- 130,134 ---- // check for incoming packets SOCKADDR_IN addr; + memset (&addr, 0, sizeof(SOCKADDR_IN)); socklen_t len; static char *buf = 0; *************** *** 157,161 **** --- 158,165 ---- // ACK packets can get eaten by HandleAck if (HandleAck(pkt, connection, &addr)) + { + delete pkt; return true; + } // Check for doubled packets and drop them *************** *** 228,232 **** } - delete pkt; return true; // eat the packet } --- 232,235 ---- *************** *** 566,571 **** psNetPacket* p = pkt->p; - psMessage *msg = (psMessage*) p->data; - MsgEntry *me; // already received the whole packet? --- 569,572 ---- *************** *** 573,577 **** && p->pktsize == msg->GetSize() ) { ! me = new MsgEntry(msg); HandleCompletedMessage(me, connection, addr); return; --- 574,579 ---- && p->pktsize == msg->GetSize() ) { ! psMessage* msg = (psMessage*) p->data; ! MsgEntry* me = new MsgEntry(msg); HandleCompletedMessage(me, connection, addr); return; *************** *** 581,584 **** --- 583,587 ---- packets.Add(pkt); + MsgEntry* me; me = CheckCompleteMessage(pkt->clientnum,pkt->p->pktid); if (me) |