attempt to fix thread race between rsEvents and TokenQueue

This commit is contained in:
csoler 2019-12-08 21:34:52 +01:00
parent b6ca07aaa3
commit e402630095
No known key found for this signature in database
GPG Key ID: 7BCA522266C0804C
4 changed files with 9 additions and 5 deletions

View File

@ -1296,7 +1296,9 @@ bool p3GxsTunnelService::locked_sendEncryptedTunnelData(RsGxsTunnelItem *item)
}
if(it->second.status != RS_GXS_TUNNEL_STATUS_CAN_TALK)
{
#ifdef DEBUG_GXS_TUNNEL
std::cerr << "(EE) Cannot talk to tunnel id " << tunnel_id << ". Tunnel status is: " << it->second.status << std::endl;
#endif
return false;
}

View File

@ -404,11 +404,10 @@ int p3MsgService::checkOutgoingMessages()
mit->second->msgFlags |= RS_MSG_FLAGS_ROUTED;
}
}
#ifdef DEBUG_DISTANT_MSG
else
{
Dbg3() << __PRETTY_FUNCTION__ << " Delaying until available..."
<< std::endl;
}
Dbg3() << __PRETTY_FUNCTION__ << " Delaying until available..." << std::endl;
#endif
}
/* clean up */

View File

@ -1103,6 +1103,7 @@ void NewsFeed::addFeedItem(FeedItem *item)
{
static const int MAX_FEEDITEM_COUNT = 500 ;
std::cerr << "Adding feed item thread " << pthread_self() << std::endl;
item->setAttribute(Qt::WA_DeleteOnClose, true);
// costly, but not really a problem here
@ -1125,6 +1126,7 @@ void NewsFeed::addFeedItemIfUnique(FeedItem *item, bool replace)
{
FeedItem *feedItem = ui->feedWidget->findFeedItem(item->uniqueIdentifier());
std::cerr << "Adding feed item thread " << pthread_self() << std::endl;
if (feedItem)
{
if (!replace)
@ -1143,6 +1145,7 @@ void NewsFeed::remUniqueFeedItem(FeedItem *item)
{
FeedItem *feedItem = ui->feedWidget->findFeedItem(item->uniqueIdentifier());
std::cerr << "Adding feed item thread " << pthread_self() << std::endl;
if (feedItem)
{
delete item;

View File

@ -34,7 +34,7 @@ TokenQueue::TokenQueue(RsTokenService *service, TokenResponse *resp)
{
mTrigger = new RsProtectedTimer(this);
mTrigger->setSingleShot(true);
connect(mTrigger, SIGNAL(timeout()), this, SLOT(pollRequests()));
connect(mTrigger, SIGNAL(timeout()), this, SLOT(pollRequests()),Qt::QueuedConnection);
}
bool TokenQueue::requestGroupInfo(uint32_t &token, uint32_t anstype, const RsTokReqOptions &opts, std::list<RsGxsGroupId>& ids, uint32_t usertype)