Revision | 9789c358a97aa8215e227aa3a7f45afcecdc1674 (tree) |
---|---|
Time | 2009-05-23 22:51:47 |
Author | eru <eru01@user...> |
Commiter | eru |
IM0034
@@ -25,6 +25,7 @@ | ||
25 | 25 | #define DEBUG_NEW new(__FILE__, __LINE__) |
26 | 26 | #define new DEBUG_NEW |
27 | 27 | #endif |
28 | +#include <ctime> | |
28 | 29 | |
29 | 30 | // ------------------------------------------ |
30 | 31 | void PCPStream::init(GnuID &rid) |
@@ -802,6 +803,22 @@ int PCPStream::readBroadcastAtoms(AtomStream &atom,int numc,BroadcastState &bcs) | ||
802 | 803 | char tmp[64]; |
803 | 804 | bcs.chanID.toStr(tmp); |
804 | 805 | |
806 | + // Broadcast flood | |
807 | + if (servMgr->lastPCPFromID.isSame(fromID) | |
808 | + && time(NULL) - servMgr->lastPCPBcstTime < 3) | |
809 | + { | |
810 | + memcpy(servMgr->lastPCPFromID.id, fromID.id, 16); | |
811 | + servMgr->lastPCPBcstTime = time(NULL); | |
812 | + LOG_DEBUG("PCP bcst reject: group=%d, hops=%d, ver=%d(%c%c%04d), from=%s, dest=%s ttl=%d", | |
813 | + bcs.group,bcs.numHops,ver,ver_ex_prefix[0],ver_ex_prefix[1],ver_ex_number,fromStr,destStr,bcs.ttl); | |
814 | + | |
815 | + return r; | |
816 | + } | |
817 | + memcpy(servMgr->lastPCPFromID.id, fromID.id, 16); | |
818 | + servMgr->lastPCPBcstTime = time(NULL); | |
819 | + | |
820 | + servMgr->lastPCPFromID.toStr(destStr); | |
821 | + | |
805 | 822 | // LOG_DEBUG(tmp); |
806 | 823 | |
807 | 824 | if (ver_ex_number){ |
@@ -267,7 +267,6 @@ public: | ||
267 | 267 | //int error; |
268 | 268 | GnuIDList routeList; |
269 | 269 | GnuID remoteID; |
270 | - | |
271 | 270 | }; |
272 | 271 | |
273 | 272 | #endif |
@@ -449,6 +449,10 @@ public: | ||
449 | 449 | bcstClap = 0x00000001 |
450 | 450 | }; |
451 | 451 | |
452 | + // PCP broadcast flood | |
453 | + GnuID lastPCPFromID; | |
454 | + time_t lastPCPBcstTime; | |
455 | + | |
452 | 456 | private: |
453 | 457 | FW_STATE firewalled; |
454 | 458 | }; |
@@ -44,9 +44,9 @@ extern int version_ex; // PP | ||
44 | 44 | #if 1 /* for VP extend version */ |
45 | 45 | //#define VERSION_EX 1 |
46 | 46 | static const char *PCP_CLIENT_VERSION_EX_PREFIX = "IM"; // 2bytes only |
47 | -static const int PCP_CLIENT_VERSION_EX_NUMBER = 33; | |
48 | -static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0033)"; | |
49 | -static const char *PCX_VERSTRING_EX = "v0.1218(IM0033)"; | |
47 | +static const int PCP_CLIENT_VERSION_EX_NUMBER = 34; | |
48 | +static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0034)"; | |
49 | +static const char *PCX_VERSTRING_EX = "v0.1218(IM0034)"; | |
50 | 50 | #endif |
51 | 51 | |
52 | 52 | // ------------------------------------------------ |
@@ -25,6 +25,7 @@ | ||
25 | 25 | #define DEBUG_NEW new(__FILE__, __LINE__) |
26 | 26 | #define new DEBUG_NEW |
27 | 27 | #endif |
28 | +#include <ctime> | |
28 | 29 | |
29 | 30 | // ------------------------------------------ |
30 | 31 | void PCPStream::init(GnuID &rid) |
@@ -802,6 +803,22 @@ int PCPStream::readBroadcastAtoms(AtomStream &atom,int numc,BroadcastState &bcs) | ||
802 | 803 | char tmp[64]; |
803 | 804 | bcs.chanID.toStr(tmp); |
804 | 805 | |
806 | + // Broadcast flood | |
807 | + if (servMgr->lastPCPFromID.isSame(fromID) | |
808 | + && time(NULL) - servMgr->lastPCPBcstTime < 3) | |
809 | + { | |
810 | + memcpy(servMgr->lastPCPFromID.id, fromID.id, 16); | |
811 | + servMgr->lastPCPBcstTime = time(NULL); | |
812 | + LOG_DEBUG("PCP bcst reject: group=%d, hops=%d, ver=%d(%c%c%04d), from=%s, dest=%s ttl=%d", | |
813 | + bcs.group,bcs.numHops,ver,ver_ex_prefix[0],ver_ex_prefix[1],ver_ex_number,fromStr,destStr,bcs.ttl); | |
814 | + | |
815 | + return r; | |
816 | + } | |
817 | + memcpy(servMgr->lastPCPFromID.id, fromID.id, 16); | |
818 | + servMgr->lastPCPBcstTime = time(NULL); | |
819 | + | |
820 | + servMgr->lastPCPFromID.toStr(destStr); | |
821 | + | |
805 | 822 | // LOG_DEBUG(tmp); |
806 | 823 | |
807 | 824 | if (ver_ex_number){ |
@@ -267,7 +267,6 @@ public: | ||
267 | 267 | //int error; |
268 | 268 | GnuIDList routeList; |
269 | 269 | GnuID remoteID; |
270 | - | |
271 | 270 | }; |
272 | 271 | |
273 | 272 | #endif |
@@ -449,6 +449,10 @@ public: | ||
449 | 449 | bcstClap = 0x00000001 |
450 | 450 | }; |
451 | 451 | |
452 | + // PCP broadcast flood | |
453 | + GnuID lastPCPFromID; | |
454 | + time_t lastPCPBcstTime; | |
455 | + | |
452 | 456 | private: |
453 | 457 | FW_STATE firewalled; |
454 | 458 | }; |
@@ -44,9 +44,9 @@ extern int version_ex; // PP | ||
44 | 44 | #if 1 /* for VP extend version */ |
45 | 45 | //#define VERSION_EX 1 |
46 | 46 | static const char *PCP_CLIENT_VERSION_EX_PREFIX = "IM"; // 2bytes only |
47 | -static const int PCP_CLIENT_VERSION_EX_NUMBER = 33; | |
48 | -static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0033)"; | |
49 | -static const char *PCX_VERSTRING_EX = "v0.1218(IM0033)"; | |
47 | +static const int PCP_CLIENT_VERSION_EX_NUMBER = 34; | |
48 | +static const char *PCX_AGENTEX = "PeerCast/0.1218(IM0034)"; | |
49 | +static const char *PCX_VERSTRING_EX = "v0.1218(IM0034)"; | |
50 | 50 | #endif |
51 | 51 | |
52 | 52 | // ------------------------------------------------ |