mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-08-14 10:37:33 -07:00
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.
This commit is contained in:
parent
08a11a6f32
commit
9e651b39e4
7 changed files with 110 additions and 99 deletions
|
@ -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),
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue