suppressed memory leak in construction of RsDiscReply packet

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3973 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2011-01-21 22:04:14 +00:00
parent 920ebe3a5a
commit a1154b6935

View file

@ -268,7 +268,10 @@ void p3disc::sendAllInfoToJustConnectedPeer(const std::string &id)
RsPeerDetails pd; RsPeerDetails pd;
rsPeers->getPeerDetails(id, pd); rsPeers->getPeerDetails(id, pd);
if (!pd.accept_connection || (!pd.ownsign && pd.gpg_id != rsPeers->getGPGOwnId())) { //only send info when connection is accepted and gpg key is signed or our own key
if (!pd.accept_connection || (!pd.ownsign && pd.gpg_id != rsPeers->getGPGOwnId()))
{
//only send info when connection is accepted and gpg key is signed or our own key
#ifdef P3DISC_DEBUG #ifdef P3DISC_DEBUG
std::cerr << "p3disc::sendAllInfoToJustConnectedPeer() we're not sending the info because the destination gpg key is not signed or not accepted." << std::cerr << std::endl; std::cerr << "p3disc::sendAllInfoToJustConnectedPeer() we're not sending the info because the destination gpg key is not signed or not accepted." << std::cerr << std::endl;
#endif #endif
@ -417,23 +420,23 @@ RsDiscReply *p3disc::createDiscReply(const std::string &to, const std::string &a
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
shouldWeSendGPGKey = true; shouldWeSendGPGKey = true;
RsPeerNetItem *rsPeerNetItem = new RsPeerNetItem(); RsPeerNetItem rsPeerNetItem ;
rsPeerNetItem->clear(); rsPeerNetItem.clear();
rsPeerNetItem->pid = detail.id; rsPeerNetItem.pid = detail.id;
rsPeerNetItem->gpg_id = detail.gpg_id; rsPeerNetItem.gpg_id = detail.gpg_id;
rsPeerNetItem->location = detail.location; rsPeerNetItem.location = detail.location;
rsPeerNetItem->netMode = detail.netMode; rsPeerNetItem.netMode = detail.netMode;
rsPeerNetItem->visState = detail.visState; rsPeerNetItem.visState = detail.visState;
rsPeerNetItem->lastContact = detail.lastcontact; rsPeerNetItem.lastContact = detail.lastcontact;
rsPeerNetItem->currentlocaladdr = detail.currentlocaladdr; rsPeerNetItem.currentlocaladdr = detail.currentlocaladdr;
rsPeerNetItem->currentremoteaddr = detail.currentserveraddr; rsPeerNetItem.currentremoteaddr = detail.currentserveraddr;
rsPeerNetItem->dyndns = detail.dyndns; rsPeerNetItem.dyndns = detail.dyndns;
detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem->localAddrList); detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem.localAddrList);
detail.ipAddrs.mExt.loadTlv(rsPeerNetItem->extAddrList); detail.ipAddrs.mExt.loadTlv(rsPeerNetItem.extAddrList);
di->rsPeerList.push_back(*rsPeerNetItem); di->rsPeerList.push_back(rsPeerNetItem);
} }
else else
{ {
@ -452,22 +455,21 @@ RsDiscReply *p3disc::createDiscReply(const std::string &to, const std::string &a
if (mConnMgr->getOwnNetStatus(detail)) if (mConnMgr->getOwnNetStatus(detail))
{ {
shouldWeSendGPGKey = true; shouldWeSendGPGKey = true;
RsPeerNetItem *rsPeerNetItem = new RsPeerNetItem(); RsPeerNetItem rsPeerNetItem ;
rsPeerNetItem->clear(); rsPeerNetItem.clear();
rsPeerNetItem->pid = detail.id; rsPeerNetItem.pid = detail.id;
rsPeerNetItem->gpg_id = detail.gpg_id; rsPeerNetItem.gpg_id = detail.gpg_id;
rsPeerNetItem->location = detail.location; rsPeerNetItem.location = detail.location;
rsPeerNetItem->netMode = detail.netMode; rsPeerNetItem.netMode = detail.netMode;
rsPeerNetItem->visState = detail.visState; rsPeerNetItem.visState = detail.visState;
rsPeerNetItem->lastContact = time(NULL); rsPeerNetItem.lastContact = time(NULL);
rsPeerNetItem->currentlocaladdr = detail.currentlocaladdr; rsPeerNetItem.currentlocaladdr = detail.currentlocaladdr;
rsPeerNetItem->currentremoteaddr = detail.currentserveraddr; rsPeerNetItem.currentremoteaddr = detail.currentserveraddr;
rsPeerNetItem->dyndns = detail.dyndns; rsPeerNetItem.dyndns = detail.dyndns;
detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem->localAddrList); detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem.localAddrList);
detail.ipAddrs.mExt.loadTlv(rsPeerNetItem->extAddrList); detail.ipAddrs.mExt.loadTlv(rsPeerNetItem.extAddrList);
di->rsPeerList.push_back(rsPeerNetItem);
di->rsPeerList.push_back(*rsPeerNetItem);
} }
} }