mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
commit
d73b2767d6
@ -827,9 +827,10 @@ int decodeCompactPeerId(struct sockaddr_in *addr, char *enc, int len)
|
|||||||
|
|
||||||
memset(addr, 0, sizeof(struct sockaddr_in));
|
memset(addr, 0, sizeof(struct sockaddr_in));
|
||||||
|
|
||||||
uint32_t *ip = (uint32_t *) (enc);
|
//uint32_t *ip = (uint32_t *) (enc);
|
||||||
uint16_t *port = (uint16_t *) (&enc[4]);
|
uint16_t *port = (uint16_t *) (&enc[4]);
|
||||||
addr->sin_addr.s_addr = (*ip);
|
|
||||||
|
memcpy(& addr->sin_addr.s_addr, enc, sizeof(in_addr_t)); // aligned version of "addr->sin_addr.s_addr = (*ip); "
|
||||||
addr->sin_port = (*port);
|
addr->sin_port = (*port);
|
||||||
addr->sin_family = AF_INET;
|
addr->sin_family = AF_INET;
|
||||||
|
|
||||||
|
@ -1945,7 +1945,10 @@ p3FileDatabase::DirSyncRequestId p3FileDatabase::makeDirSyncReqId(const RsPeerId
|
|||||||
// This is kind of arbitrary. The important thing is that the same ID needs to be generated every time for a given (peer_id,entry index) pair, in a way
|
// This is kind of arbitrary. The important thing is that the same ID needs to be generated every time for a given (peer_id,entry index) pair, in a way
|
||||||
// that cannot be brute-forced or reverse-engineered, which explains the random bias and the usage of the hash, that is itself random.
|
// that cannot be brute-forced or reverse-engineered, which explains the random bias and the usage of the hash, that is itself random.
|
||||||
|
|
||||||
uint64_t r = random_bias ^ *((uint64_t*)tmp.toByteArray()) ;
|
uint64_t tmp2 ;
|
||||||
|
memcpy(&tmp2,tmp.toByteArray(),sizeof(uint64_t));
|
||||||
|
|
||||||
|
uint64_t r = random_bias ^ tmp2;
|
||||||
|
|
||||||
#ifdef DEBUG_P3FILELISTS
|
#ifdef DEBUG_P3FILELISTS
|
||||||
std::cerr << "Creating ID " << std::hex << r << std::dec << " from peer id " << peer_id << " and hash " << hash << std::endl;
|
std::cerr << "Creating ID " << std::hex << r << std::dec << " from peer id " << peer_id << " and hash " << hash << std::endl;
|
||||||
|
@ -533,6 +533,14 @@ void p3GxsTrans::service_tick()
|
|||||||
for(std::map<RsGxsId,MsgSizeCount>::const_iterator it(per_user_statistics.begin());it!=per_user_statistics.end();++it)
|
for(std::map<RsGxsId,MsgSizeCount>::const_iterator it(per_user_statistics.begin());it!=per_user_statistics.end();++it)
|
||||||
std::cerr << " " << it->first << ": " << it->second.count << " " << it->second.size << std::endl;
|
std::cerr << " " << it->first << ": " << it->second.count << " " << it->second.size << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
// Waiting here is very important because the thread may still be updating its semaphores after setting isDone() to true
|
||||||
|
// If we delete it during this operation it will corrupt the stack and cause unpredictable errors.
|
||||||
|
|
||||||
|
while(mCleanupThread->isRunning())
|
||||||
|
{
|
||||||
|
std::cerr << "Waiting for mCleanupThread to terminate..." << std::endl;
|
||||||
|
rstime::rs_usleep(500*1000);
|
||||||
|
}
|
||||||
|
|
||||||
delete mCleanupThread;
|
delete mCleanupThread;
|
||||||
mCleanupThread=NULL ;
|
mCleanupThread=NULL ;
|
||||||
|
@ -101,14 +101,20 @@ peerAddrInfo::peerAddrInfo()
|
|||||||
}
|
}
|
||||||
|
|
||||||
peerConnectState::peerConnectState()
|
peerConnectState::peerConnectState()
|
||||||
: connecttype(0),
|
: dhtVisible(false),
|
||||||
lastavailable(0),
|
connecttype(0),
|
||||||
lastattempt(0),
|
actAsServer(false),
|
||||||
name(""),
|
lastavailable(0),
|
||||||
state(0), actions(0),
|
lastattempt(0),
|
||||||
source(0),
|
name(""),
|
||||||
inConnAttempt(0),
|
state(0),
|
||||||
wasDeniedConnection(false), deniedTS(false), deniedInConnAttempt(false)
|
actions(0),
|
||||||
|
linkType(0),
|
||||||
|
source(0),
|
||||||
|
inConnAttempt(false),
|
||||||
|
wasDeniedConnection(false),
|
||||||
|
deniedTS(0),
|
||||||
|
deniedInConnAttempt(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@ extern RsGxsChannels* rsGxsChannels;
|
|||||||
|
|
||||||
struct RsGxsChannelGroup : RsSerializable
|
struct RsGxsChannelGroup : RsSerializable
|
||||||
{
|
{
|
||||||
|
RsGxsChannelGroup() : mAutoDownload(false) {}
|
||||||
|
|
||||||
RsGroupMetaData mMeta;
|
RsGroupMetaData mMeta;
|
||||||
std::string mDescription;
|
std::string mDescription;
|
||||||
RsGxsImage mImage;
|
RsGxsImage mImage;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <errno.h> // for errno
|
#include <errno.h> // for errno
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "util/rstime.h"
|
#include "util/rstime.h"
|
||||||
|
#include "util/rsdebug.h"
|
||||||
|
|
||||||
#include "util/rstime.h"
|
#include "util/rstime.h"
|
||||||
|
|
||||||
@ -66,8 +67,8 @@ void RsThread::go()
|
|||||||
|
|
||||||
runloop();
|
runloop();
|
||||||
|
|
||||||
mHasStoppedSemaphore.set(1);
|
|
||||||
mShouldStopSemaphore.set(0);
|
mShouldStopSemaphore.set(0);
|
||||||
|
mHasStoppedSemaphore.set(1); // last value that we modify because this is interpreted as a signal that the object can be deleted.
|
||||||
}
|
}
|
||||||
void *RsThread::rsthread_init(void* p)
|
void *RsThread::rsthread_init(void* p)
|
||||||
{
|
{
|
||||||
@ -103,6 +104,15 @@ RsThread::RsThread()
|
|||||||
mShouldStopSemaphore.set(0) ;
|
mShouldStopSemaphore.set(0) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RsThread::~RsThread()
|
||||||
|
{
|
||||||
|
if(isRunning())
|
||||||
|
{
|
||||||
|
RsErr() << "Deleting a thread that is still running! Something is very wrong here and Retroshare is likely to crash because of this." << std::endl;
|
||||||
|
print_stacktrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool RsThread::isRunning()
|
bool RsThread::isRunning()
|
||||||
{
|
{
|
||||||
// do we need a mutex for this ?
|
// do we need a mutex for this ?
|
||||||
|
@ -243,11 +243,11 @@ class RsThread
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RsThread();
|
RsThread();
|
||||||
virtual ~RsThread() {}
|
virtual ~RsThread() ;
|
||||||
|
|
||||||
void start(const std::string &threadName = "");
|
void start(const std::string &threadName = "");
|
||||||
|
|
||||||
// Returns true of the thread is still running.
|
// Returns true if the thread is still running.
|
||||||
|
|
||||||
bool isRunning();
|
bool isRunning();
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ namespace RsMemoryManagement
|
|||||||
|
|
||||||
inline bool chunkOwnsPointer(const Chunk& c,void *p) const
|
inline bool chunkOwnsPointer(const Chunk& c,void *p) const
|
||||||
{
|
{
|
||||||
return p >= c._data && (static_cast<unsigned char *>(p)-c._data)/_blockSize < _numBlocks ;
|
return intptr_t(p) >= intptr_t(c._data) && (intptr_t(static_cast<unsigned char *>(p))-intptr_t(c._data))/intptr_t(_blockSize)< intptr_t( _numBlocks );
|
||||||
}
|
}
|
||||||
|
|
||||||
void printStatistics() const ;
|
void printStatistics() const ;
|
||||||
|
@ -92,6 +92,10 @@ linux-* {
|
|||||||
DEFINES *= HAVE_XSS # for idle time, libx screensaver extensions
|
DEFINES *= HAVE_XSS # for idle time, libx screensaver extensions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rs_sanitize {
|
||||||
|
LIBS *= -lasan -lubsan
|
||||||
|
}
|
||||||
|
|
||||||
unix {
|
unix {
|
||||||
target.path = "$${BIN_DIR}"
|
target.path = "$${BIN_DIR}"
|
||||||
INSTALLS += target
|
INSTALLS += target
|
||||||
|
@ -58,6 +58,9 @@ linux-g++-64 {
|
|||||||
OBJECTS_DIR = temp/linux-g++-64/obj
|
OBJECTS_DIR = temp/linux-g++-64/obj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rs_sanitize {
|
||||||
|
LIBS *= -lasan -lubsan
|
||||||
|
}
|
||||||
#################### Cross compilation for windows under Linux ###################
|
#################### Cross compilation for windows under Linux ###################
|
||||||
|
|
||||||
win32-x-g++ {
|
win32-x-g++ {
|
||||||
|
@ -461,6 +461,10 @@ rs_onlyhiddennode {
|
|||||||
message("QMAKE: You have enabled only hidden node.")
|
message("QMAKE: You have enabled only hidden node.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rs_sanitize {
|
||||||
|
QMAKE_CXXFLAGS *= -fsanitize=address -fsanitize=bounds -fsanitize=undefined
|
||||||
|
}
|
||||||
|
|
||||||
no_rs_deprecatedwarning {
|
no_rs_deprecatedwarning {
|
||||||
QMAKE_CXXFLAGS += -Wno-deprecated
|
QMAKE_CXXFLAGS += -Wno-deprecated
|
||||||
QMAKE_CXXFLAGS += -Wno-deprecated-declarations
|
QMAKE_CXXFLAGS += -Wno-deprecated-declarations
|
||||||
|
Loading…
Reference in New Issue
Block a user