mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-21 21:04:32 -04:00
p3StatusService::getStatusQueue
- memory leak -> "RsItem* item" was not freed, when "dynamic_cast<RsStatusItem*>" failed - optimized return of std::list as parameter and not as return. return will copy the list and its not necessary p3StatusService::getStatus - memory leak -> items in "std::list<RsStatusItem* > status_items" was not freed - potential crash, when receiving a status for an unknown peer p3Peers::getPeerDetails - optimized - call to "AuthSSL::getAuthSSL()->OwnId()" only once - optimized - add ip addresses directly to "d.ipAddressList" PeersDialog::insertPeers - fixed possible crash, when ssl child has disappeared and was removed from tree, there was a missing continue git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3125 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
61f2c14663
commit
0d1eaba890
5 changed files with 53 additions and 51 deletions
|
@ -65,8 +65,8 @@ bool p3StatusService::getStatus(std::list<StatusInfo>& statusInfo)
|
|||
|
||||
statusInfo.clear();
|
||||
|
||||
std::list<RsStatusItem* > status_items = getStatusQueue();
|
||||
std::list<RsStatusItem* >::iterator rit;
|
||||
std::list<RsStatusItem* > status_items;
|
||||
getStatusQueue(status_items);
|
||||
std::map<std::string, StatusInfo>::iterator mit;
|
||||
std::list<std::string> peers, peersOnline;
|
||||
std::list<std::string>::iterator pit, pit_online;
|
||||
|
@ -98,29 +98,24 @@ bool p3StatusService::getStatus(std::list<StatusInfo>& statusInfo)
|
|||
}
|
||||
|
||||
// now note members who have sent specific status updates
|
||||
for(rit = status_items.begin(); rit != status_items.end(); rit++){
|
||||
|
||||
RsStatusItem* si = dynamic_cast<RsStatusItem* >(*rit);
|
||||
|
||||
if(si == NULL){
|
||||
std::cerr << "p3Status::getStatus() " << "Failed to cast Item \n" << std::endl;
|
||||
}
|
||||
|
||||
while (status_items.size()){
|
||||
RsStatusItem* si = status_items.front();
|
||||
status_items.pop_front();
|
||||
|
||||
mit = mStatusInfoMap.find(si->PeerId());
|
||||
|
||||
|
||||
if(mit != mStatusInfoMap.end()){
|
||||
mit->second.id = si->PeerId();
|
||||
mit->second.status = si->status;
|
||||
mit->second.time_stamp = si->sendTime;
|
||||
#ifdef STATUS_DEBUG
|
||||
if(mit == mStatusInfoMap.end()){
|
||||
} else {
|
||||
std::cerr << "p3GetStatus() " << "Could not find Peer" << si->PeerId();
|
||||
std::cerr << std::endl;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
mit->second.id = si->PeerId();
|
||||
mit->second.status = si->status;
|
||||
mit->second.time_stamp = si->sendTime;
|
||||
|
||||
delete (si);
|
||||
}
|
||||
|
||||
// then fill up statusInfo list with this information
|
||||
|
@ -190,31 +185,31 @@ bool p3StatusService::statusAvailable(){
|
|||
|
||||
/******************************/
|
||||
|
||||
std::list<RsStatusItem* > p3StatusService::getStatusQueue(){
|
||||
|
||||
|
||||
void p3StatusService::getStatusQueue(std::list<RsStatusItem* > &ilist)
|
||||
{
|
||||
time_t time_now = time(NULL);
|
||||
|
||||
RsItem* item;
|
||||
std::list<RsStatusItem* > ilist;
|
||||
|
||||
while(NULL != (item = recvItem())){
|
||||
|
||||
RsStatusItem* status_item = dynamic_cast<RsStatusItem*>(item);
|
||||
|
||||
if(status_item != NULL){
|
||||
#ifdef STATUS_DEBUG
|
||||
std::cerr << "p3StatusService::getStatusQueue()" << std::endl;
|
||||
std::cerr << "PeerId : " << status_item->PeerId() << std::endl;
|
||||
std::cerr << "Status: " << status_item->status << std::endl;
|
||||
std::cerr << "Got status Item" << std::endl;
|
||||
#endif
|
||||
status_item->recvTime = time_now;
|
||||
ilist.push_back(status_item);
|
||||
if(status_item == NULL) {
|
||||
std::cerr << "p3Status::getStatusQueue() " << "Failed to cast Item \n" << std::endl;
|
||||
delete (item);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return ilist;
|
||||
#ifdef STATUS_DEBUG
|
||||
std::cerr << "p3StatusService::getStatusQueue()" << std::endl;
|
||||
std::cerr << "PeerId : " << status_item->PeerId() << std::endl;
|
||||
std::cerr << "Status: " << status_item->status << std::endl;
|
||||
std::cerr << "Got status Item" << std::endl;
|
||||
#endif
|
||||
status_item->recvTime = time_now;
|
||||
ilist.push_back(status_item);
|
||||
}
|
||||
}
|
||||
|
||||
/* p3Config */
|
||||
|
|
|
@ -83,7 +83,7 @@ virtual bool loadList(std::list<RsItem*> load);
|
|||
|
||||
private:
|
||||
|
||||
virtual std::list<RsStatusItem* > getStatusQueue();
|
||||
virtual void getStatusQueue(std::list<RsStatusItem* > &ilist);
|
||||
|
||||
p3ConnectMgr *mConnMgr;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue