X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fnet.h;h=093ba85cfd6c2f8d3fc7cd01ec083bc052ddab2a;hb=5098ea454db9132aa0f576921ca9d1a69429d146;hp=f071ac734936a9ce48be27a3dcca19c3c79d66bb;hpb=cecf7a56ed5a5efd939b21c760c69da616306005;p=novacoin.git diff --git a/src/net.h b/src/net.h index f071ac7..093ba85 100644 --- a/src/net.h +++ b/src/net.h @@ -9,7 +9,6 @@ #include #ifndef Q_MOC_RUN #include -#include #endif #include @@ -60,6 +59,9 @@ enum LOCAL_MAX }; + +bool IsPeerAddrLocalGood(CNode *pnode); +void AdvertiseLocal(CNode *pnode); void SetLimited(enum Network net, bool fLimited = true); bool IsLimited(enum Network net); bool IsLimited(const CNetAddr& addr); @@ -119,6 +121,9 @@ enum threadId extern bool fClient; extern bool fDiscover; +extern bool fNoListen; + +extern bool fDiscover; extern uint64_t nLocalServices; extern uint64_t nLocalHostNonce; extern CAddress addrSeenByPeer; @@ -216,6 +221,9 @@ public: bool fGetAddr; std::set setKnown; uint256 hashCheckpointKnown; // ppcoin: known sent sync-checkpoint + int64_t nNextAddrSend; + int64_t nNextLocalAddrSend; + int64_t nNextInvSend; // inventory based relay mruset setInventoryKnown; @@ -251,6 +259,9 @@ public: pindexLastGetBlocksBegin = 0; hashLastGetBlocksEnd = 0; nStartingHeight = -1; + nNextLocalAddrSend = 0; + nNextAddrSend = 0; + nNextInvSend = 0; fStartSync = false; fGetAddr = false; nMisbehavior = 0; @@ -391,8 +402,10 @@ public: return; } - if (nHeaderStart < 0) + if (nHeaderStart < 0) { + LEAVE_CRITICAL_SECTION(cs_vSend); return; + } // Set the size uint32_t nSize = (uint32_t) vSend.size() - nMessageStart; @@ -444,13 +457,13 @@ public: } } - template - void PushMessage(const char* pszCommand, const T1& a1) + template + void PushMessage(const char* pszCommand, const Args&... args) { try { BeginMessage(pszCommand); - vSend << a1; + (vSend << ... << args); EndMessage(); } catch (...) @@ -460,135 +473,6 @@ public: } } - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4, const T5& a5) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4 << a5; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4, const T5& a5, const T6& a6) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4 << a5 << a6; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4, const T5& a5, const T6& a6, const T7& a7) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4 << a5 << a6 << a7; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4, const T5& a5, const T6& a6, const T7& a7, const T8& a8) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - template - void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4, const T5& a5, const T6& a6, const T7& a7, const T8& a8, const T9& a9) - { - try - { - BeginMessage(pszCommand); - vSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8 << a9; - EndMessage(); - } - catch (...) - { - AbortMessage(); - throw; - } - } - - void PushRequest(const char* pszCommand, void (*fn)(void*, CDataStream&), void* param1) { @@ -674,7 +558,7 @@ inline void RelayInventory(const CInv& inv) // Put on lists to offer to the other nodes { LOCK(cs_vNodes); - BOOST_FOREACH(CNode* pnode, vNodes) + for (CNode* pnode : vNodes) pnode->PushInventory(inv); } } @@ -684,4 +568,7 @@ void RelayTransaction(const CTransaction& tx, const uint256& hash); void RelayTransaction(const CTransaction& tx, const uint256& hash, const CDataStream& ss); +/** Return a timestamp in the future (in microseconds) for exponentially distributed events. */ +int64_t PoissonNextSend(int64_t nNow, int average_interval_seconds); + #endif