mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-11 18:45:17 -04:00
* Added another Test UdpLayer: TimedUdpLayer, This simulates the firewalled situation, be only accepting packets after 60 seconds.
* added quick and dirty BitDht Packet check. test against "d1:" for the first 3 bytes. This should not conflict with Stun, Relay or TOU packets. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4480 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
fcd51a8439
commit
6e6767be30
5 changed files with 116 additions and 10 deletions
|
@ -532,11 +532,11 @@ int LossyUdpLayer::receiveUdpPacket(void *data, int *size, struct sockaddr_in &f
|
|||
if (prob < lossFraction)
|
||||
{
|
||||
/* discard */
|
||||
std::cerr << "LossyUdpLayer::receiveUdpPacket() Dropping packet!";
|
||||
std::cerr << std::endl;
|
||||
std::cerr << printPkt(data, *size);
|
||||
std::cerr << std::endl;
|
||||
std::cerr << "LossyUdpLayer::receiveUdpPacket() Packet Dropped!";
|
||||
//std::cerr << "LossyUdpLayer::receiveUdpPacket() Dropping packet!";
|
||||
//std::cerr << std::endl;
|
||||
//std::cerr << printPkt(data, *size);
|
||||
//std::cerr << std::endl;
|
||||
std::cerr << "LossyUdpLayer::receiveUdpPacket() Packet (" << *size << ") Dropped!";
|
||||
std::cerr << std::endl;
|
||||
|
||||
*size = 0;
|
||||
|
@ -556,11 +556,11 @@ int LossyUdpLayer::sendUdpPacket(const void *data, int size, const struct sockad
|
|||
{
|
||||
/* discard */
|
||||
|
||||
std::cerr << "LossyUdpLayer::sendUdpPacket() Dropping packet!";
|
||||
std::cerr << std::endl;
|
||||
std::cerr << printPkt((void *) data, size);
|
||||
std::cerr << std::endl;
|
||||
std::cerr << "LossyUdpLayer::sendUdpPacket() Packet Dropped!";
|
||||
//std::cerr << "LossyUdpLayer::sendUdpPacket() Dropping packet!";
|
||||
//std::cerr << std::endl;
|
||||
//std::cerr << printPkt((void *) data, size);
|
||||
//std::cerr << std::endl;
|
||||
std::cerr << "LossyUdpLayer::sendUdpPacket() Packet (" << size << ") Dropped!";
|
||||
std::cerr << std::endl;
|
||||
|
||||
return size;
|
||||
|
@ -677,4 +677,73 @@ int RestrictedUdpLayer::sendUdpPacket(const void *data, int size, const struct s
|
|||
// otherwise read normally;
|
||||
return UdpLayer::sendUdpPacket(data, size, to);
|
||||
}
|
||||
|
||||
|
||||
#define STARTUP_PERIOD 60
|
||||
|
||||
TimedUdpLayer::TimedUdpLayer(UdpReceiver *udpr,
|
||||
struct sockaddr_in &local)
|
||||
:UdpLayer(udpr, local)
|
||||
{
|
||||
mStartTime = time(NULL) + STARTUP_PERIOD;
|
||||
mActive = false;
|
||||
return;
|
||||
}
|
||||
|
||||
TimedUdpLayer::~TimedUdpLayer() { return; }
|
||||
|
||||
int TimedUdpLayer::receiveUdpPacket(void *data, int *size, struct sockaddr_in &from)
|
||||
{
|
||||
if (0 < UdpLayer::receiveUdpPacket(data, size, from))
|
||||
{
|
||||
if (!mActive)
|
||||
{
|
||||
if (time(NULL) < mStartTime)
|
||||
{
|
||||
#ifdef DEBUG_UDP_LAYER
|
||||
#endif
|
||||
std::cerr << "TimedUdpLayer::receiveUdpPacket() Dropping packet (Too Early)";
|
||||
std::cerr << std::endl;
|
||||
//std::cerr << printPkt(data, *size);
|
||||
//std::cerr << std::endl;
|
||||
|
||||
*size = 0;
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
mActive = true;
|
||||
|
||||
}
|
||||
|
||||
/* acceptable port */
|
||||
return *size;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int TimedUdpLayer::sendUdpPacket(const void *data, int size, const struct sockaddr_in &to)
|
||||
{
|
||||
if (!mActive)
|
||||
{
|
||||
if (time(NULL) < mStartTime)
|
||||
{
|
||||
/* drop */
|
||||
#ifdef DEBUG_UDP_LAYER
|
||||
#endif
|
||||
std::cerr << "TimedUdpLayer::sendUdpPacket() Dropping packet (Too Early)";
|
||||
std::cerr << std::endl;
|
||||
return size;
|
||||
}
|
||||
|
||||
/* else activate */
|
||||
mActive = true;
|
||||
}
|
||||
|
||||
// otherwise read normally;
|
||||
return UdpLayer::sendUdpPacket(data, size, to);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue