Fixed crash on shutdown of RetroShare, when the cache loading is running.

Now the p3distrib threads are stopped before the instance of AuthGPG is deleted.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4119 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2011-04-03 16:20:47 +00:00
parent 372d837af1
commit f9c896c3ac
5 changed files with 15 additions and 3 deletions

View File

@ -180,5 +180,15 @@ void RsServer::rsGlobalShutDown()
join(); join();
ftserver->StopThreads(); ftserver->StopThreads();
// stop the p3distrib threads
#ifndef MINIMAL_LIBRS
mForums->join();
mChannels->join();
#ifdef RS_USE_BLOGS
mBlogs->join();
#endif
#endif // MINIMAL_LIBRS
AuthGPGExit(); AuthGPGExit();
} }

View File

@ -53,6 +53,7 @@ RsServer::RsServer(RsIface &i, NotifyBase &callback)
chatSrv = NULL; chatSrv = NULL;
mStatusSrv = NULL; mStatusSrv = NULL;
mChannels = NULL; mChannels = NULL;
mForums = NULL;
/* caches (that need ticking) */ /* caches (that need ticking) */
mRanking = NULL; mRanking = NULL;

View File

@ -45,7 +45,7 @@
#include "services/p3blogs.h" #include "services/p3blogs.h"
#include "services/p3statusservice.h" #include "services/p3statusservice.h"
#include "services/p3channels.h" #include "services/p3channels.h"
#include "services/p3forums.h"
/* The Main Interface Class - for controlling the server */ /* The Main Interface Class - for controlling the server */
@ -163,6 +163,7 @@ class RsServer: public RsControl, public RsThread
p3ChatService *chatSrv; p3ChatService *chatSrv;
p3StatusService *mStatusSrv; p3StatusService *mStatusSrv;
p3Channels *mChannels; p3Channels *mChannels;
p3Forums *mForums;
/* caches (that need ticking) */ /* caches (that need ticking) */
p3Ranking *mRanking; p3Ranking *mRanking;

View File

@ -1957,7 +1957,7 @@ int RsServer::StartupRetroShare()
CachePair cp(mRanking, mRanking, CacheId(RS_SERVICE_TYPE_RANK, 0)); CachePair cp(mRanking, mRanking, CacheId(RS_SERVICE_TYPE_RANK, 0));
mCacheStrapper -> addCachePair(cp); /* end of declaration */ mCacheStrapper -> addCachePair(cp); /* end of declaration */
p3Forums *mForums = new p3Forums(RS_SERVICE_TYPE_FORUM, mForums = new p3Forums(RS_SERVICE_TYPE_FORUM,
mCacheStrapper, mCacheTransfer, mCacheStrapper, mCacheTransfer,
localcachedir, remotecachedir, forumdir); localcachedir, remotecachedir, forumdir);

View File

@ -862,7 +862,7 @@ void p3GroupDistrib::run() /* called once the thread is started */
int printed = 0; int printed = 0;
#endif #endif
CacheData cache; CacheData cache;
while(1) while(isRunning())
{ {
/* */ /* */