summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-20 14:00:05 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-20 14:00:05 -0700
commit7a45ff460d493dd6cf94441039a795b3ce9ffe1f (patch)
treeab29d2c7b70513e60e6b44f7d797ddc052086f37
parent6f5a4d7e2984916379b11d688ccc54cac473239e (diff)
downloadinfinitytier-7a45ff460d493dd6cf94441039a795b3ce9ffe1f.tar.gz
infinitytier-7a45ff460d493dd6cf94441039a795b3ce9ffe1f.zip
More deadlock fixes in new I/O.
-rw-r--r--node/PacketDecoder.cpp18
-rw-r--r--node/SocketManager.cpp2
2 files changed, 18 insertions, 2 deletions
diff --git a/node/PacketDecoder.cpp b/node/PacketDecoder.cpp
index 3f5979c5..c638f094 100644
--- a/node/PacketDecoder.cpp
+++ b/node/PacketDecoder.cpp
@@ -41,6 +41,7 @@
#include "NodeConfig.hpp"
#include "Service.hpp"
#include "SoftwareUpdater.hpp"
+#include "SHA512.hpp"
namespace ZeroTier {
@@ -50,7 +51,7 @@ bool PacketDecoder::tryDecode(const RuntimeEnvironment *_r)
// Unencrypted HELLOs are handled here since they are used to
// populate our identity cache in the first place. _doHELLO() is special
// in that it contains its own authentication logic.
- TRACE("<< HELLO from %s(%s) (normal unencrypted HELLO)",source().toString().c_str(),_remoteAddress.toString().c_str());
+ //TRACE("<< HELLO from %s(%s) (normal unencrypted HELLO)",source().toString().c_str(),_remoteAddress.toString().c_str());
return _doHELLO(_r);
}
@@ -77,7 +78,7 @@ bool PacketDecoder::tryDecode(const RuntimeEnvironment *_r)
return true;
}
- TRACE("<< %s from %s(%s)",Packet::verbString(verb()),source().toString().c_str(),_remoteAddress.toString().c_str());
+ //TRACE("<< %s from %s(%s)",Packet::verbString(verb()),source().toString().c_str(),_remoteAddress.toString().c_str());
switch(verb()) {
case Packet::VERB_NOP:
@@ -489,6 +490,19 @@ bool PacketDecoder::_doMULTICAST_FRAME(const RuntimeEnvironment *_r,const Shared
const unsigned int signatureLen = at<uint16_t>(ZT_PROTO_VERB_MULTICAST_FRAME_IDX_FRAME + frameLen);
const unsigned char *const signature = field(ZT_PROTO_VERB_MULTICAST_FRAME_IDX_FRAME + frameLen + 2,signatureLen);
+ /*
+ TRACE("MULTICAST_FRAME %d bytes guid#%.16llx from %s(%s) to %s on network %.16llx",(int)frameLen,(unsigned long long)guid,sourceMac.toString().c_str(),origin.toString().c_str(),dest.toString().c_str(),(unsigned long long)nwid);
+ TRACE(" received from upstream peer: %s(%s)",source().toString().c_str(),_remoteAddress.toString().c_str());
+ TRACE(" restrict prefix: %.8lx / %d",(unsigned long)prefix,(int)prefixBits);
+ TRACE(" ethernet type: %.4x(%s)",etherType,Switch::etherTypeName(etherType));
+ TRACE(" signature length: %d",(int)signatureLen);
+ {
+ unsigned char h[64];
+ SHA512::hash(h,frame,frameLen);
+ TRACE(" frame data SHA-512: %s",Utils::hex(h,64).c_str());
+ }
+ */
+
SharedPtr<Network> network(_r->nc->network(nwid));
/* Grab, verify, and learn certificate of network membership if any -- provided we are
diff --git a/node/SocketManager.cpp b/node/SocketManager.cpp
index c2261e7a..9539af38 100644
--- a/node/SocketManager.cpp
+++ b/node/SocketManager.cpp
@@ -266,6 +266,7 @@ SocketManager::SocketManager(
}
_udpV6Socket = SharedPtr<Socket>(new UdpSocket(Socket::ZT_SOCKET_TYPE_UDP_V6,s));
+ fcntl(s,F_SETFL,O_NONBLOCK);
FD_SET(s,&_readfds);
}
@@ -316,6 +317,7 @@ SocketManager::SocketManager(
}
_udpV4Socket = SharedPtr<Socket>(new UdpSocket(Socket::ZT_SOCKET_TYPE_UDP_V4,s));
+ fcntl(s,F_SETFL,O_NONBLOCK);
FD_SET(s,&_readfds);
}
}