From b8e9a79d009411525c99b886b7af41bb4c650669 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Sat, 20 Jul 2013 18:24:56 -0400 Subject: [PATCH] docs --- node/Multicaster.hpp | 11 ++++++++++- node/NodeConfig.cpp | 7 ++++++- node/Packet.hpp | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/node/Multicaster.hpp b/node/Multicaster.hpp index 9c28e1c27..ac89f84b6 100644 --- a/node/Multicaster.hpp +++ b/node/Multicaster.hpp @@ -261,7 +261,16 @@ public: bf.set((peers[chosen++] = *i)->address().sum()); // Add a supernode if there are fewer than the desired - // number of recipients. + // number of recipients. Note that we do not use the bloom + // filter to track visits to supernodes, intentionally + // allowing multicasts to ping pong between supernodes. + // Supernodes propagate even messages they've already seen, + // while regular nodes do not. Thus this ping-ponging will + // cause the supernodes to pick new starting points for + // peer to peer graph traversal multiple times. It's a + // simple, stateless way to increase supernode-driven + // propagation of a multicast in the event that peer to + // peer connectivity for its group is sparse. if (chosen < max) { Address avoid[2]; avoid[0] = originalSubmitter; diff --git a/node/NodeConfig.cpp b/node/NodeConfig.cpp index 21ed51881..849d73fca 100644 --- a/node/NodeConfig.cpp +++ b/node/NodeConfig.cpp @@ -219,12 +219,17 @@ bool NodeConfig::decodeControlMessagePacket(const void *key,const void *data,uns void NodeConfig::_CBcontrolPacketHandler(UdpSocket *sock,void *arg,const InetAddress &remoteAddr,const void *data,unsigned int len) { NodeConfig *nc = (NodeConfig *)arg; + const RuntimeEnvironment *_r = nc->_r; + try { unsigned long convId = 0; std::vector commands; - if (!decodeControlMessagePacket(nc->_controlSocketKey,data,len,convId,commands)) + if (!decodeControlMessagePacket(nc->_controlSocketKey,data,len,convId,commands)) { + TRACE("control bus packet from %s failed decode, discarded",remoteAddr.toString().c_str()); return; + } + TRACE("control bus packet from %s, contains %d commands",remoteAddr.toString().c_str(),(int)commands.size()); for(std::vector::iterator c(commands.begin());c!=commands.end();++c) { std::vector< Buffer > resultPackets(encodeControlMessage(nc->_controlSocketKey,convId,nc->execute(c->c_str()))); diff --git a/node/Packet.hpp b/node/Packet.hpp index a5c450fbf..5ccfae459 100644 --- a/node/Packet.hpp +++ b/node/Packet.hpp @@ -449,7 +449,7 @@ public: * <[2] 16-bit length of payload> * <[2] 16-bit length of signature> * <[...] ethernet payload> - * <[...] ECDSA signature> + * <[...] ECDSA signature of SHA-256 hash (see below)> * * The signature is made using the key of the original submitter, and * can be used to authenticate the submitter for security and rate