diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-10 11:40:45 -0700 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-04-10 11:40:45 -0700 |
commit | 9e651b39e416171812d0dd3835a0cb9958aed264 (patch) | |
tree | 96c13a53faee912191467fed2d033458aae6f85b /osdep | |
parent | 08a11a6f32329d26e5e85b7f66e66591d2fd1069 (diff) | |
download | infinitytier-9e651b39e416171812d0dd3835a0cb9958aed264.tar.gz infinitytier-9e651b39e416171812d0dd3835a0cb9958aed264.zip |
Add some TRACE around pinging (for now), and refactor service/One to just run in the foreground as some platforms may not require threads at all.
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/OSXEthernetTap.cpp | 1 | ||||
-rw-r--r-- | osdep/OSXEthernetTap.hpp | 6 | ||||
-rw-r--r-- | osdep/Phy.hpp | 17 |
3 files changed, 16 insertions, 8 deletions
diff --git a/osdep/OSXEthernetTap.cpp b/osdep/OSXEthernetTap.cpp index eddf787a..b333156e 100644 --- a/osdep/OSXEthernetTap.cpp +++ b/osdep/OSXEthernetTap.cpp @@ -320,7 +320,6 @@ OSXEthernetTap::OSXEthernetTap( const char *friendlyName, void (*handler)(void *,const MAC &,const MAC &,unsigned int,const Buffer<4096> &), void *arg) : - EthernetTap("OSXEthernetTap",mac,mtu,metric), _handler(handler), _arg(arg), _mtu(mtu), diff --git a/osdep/OSXEthernetTap.hpp b/osdep/OSXEthernetTap.hpp index 1ce424e9..24d81932 100644 --- a/osdep/OSXEthernetTap.hpp +++ b/osdep/OSXEthernetTap.hpp @@ -33,6 +33,12 @@ #include <stdexcept> +#include "../node/Constants.hpp" +#include "../node/MAC.hpp" +#include "../node/Buffer.hpp" +#include "../node/InetAddress.hpp" +#include "../node/MulticastGroup.hpp" + #include "Thread.hpp" namespace ZeroTier { diff --git a/osdep/Phy.hpp b/osdep/Phy.hpp index 1b55e0a6..96a946d1 100644 --- a/osdep/Phy.hpp +++ b/osdep/Phy.hpp @@ -724,13 +724,16 @@ public: case ZT_PHY_SOCKET_UDP: if (FD_ISSET(s->sock,&rfds)) { - memset(&ss,0,sizeof(ss)); - socklen_t slen = sizeof(ss); - long n = (long)::recvfrom(s->sock,buf,sizeof(buf),0,(struct sockaddr *)&ss,&slen); - if (n > 0) { - try { - _datagramHandler((PhySocket *)&(*s),&(s->uptr),(const struct sockaddr *)&ss,(void *)buf,(unsigned long)n); - } catch ( ... ) {} + for(;;) { + memset(&ss,0,sizeof(ss)); + socklen_t slen = sizeof(ss); + long n = (long)::recvfrom(s->sock,buf,sizeof(buf),0,(struct sockaddr *)&ss,&slen); + if (n > 0) { + try { + _datagramHandler((PhySocket *)&(*s),&(s->uptr),(const struct sockaddr *)&ss,(void *)buf,(unsigned long)n); + } catch ( ... ) {} + } else if (n < 0) + break; } } break; |