summaryrefslogtreecommitdiff
path: root/osdep
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-10 11:40:45 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-04-10 11:40:45 -0700
commit9e651b39e416171812d0dd3835a0cb9958aed264 (patch)
tree96c13a53faee912191467fed2d033458aae6f85b /osdep
parent08a11a6f32329d26e5e85b7f66e66591d2fd1069 (diff)
downloadinfinitytier-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.cpp1
-rw-r--r--osdep/OSXEthernetTap.hpp6
-rw-r--r--osdep/Phy.hpp17
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;