@@ -275,6 +275,11 @@ void Multicaster::send(
}
} else {
+ if (gs.txQueue.size() >= ZT_TX_QUEUE_SIZE) {
+ RR->t->outgoingNetworkFrameDropped(tPtr,network,src,mg.mac(),etherType,0,len,"multicast TX queue is full");
+ return;
+ }
+
const unsigned int gatherLimit = (limit - (unsigned int)gs.members.size()) + 1;
if ((gs.members.empty())||((now - gs.lastExplicitGather) >= ZT_MULTICAST_EXPLICIT_GATHER_DELAY)) {
@@ -105,7 +105,11 @@ void LinuxNetLink::_setSocketTimeout(int fd, int seconds)
#define ZT_NL_BUF_SIZE 16384
int LinuxNetLink::_doRecv(int fd)
{
- char *const buf = (char *)valloc(ZT_NL_BUF_SIZE);
+ char *buf = nullptr;
+ if (posix_memalign((void **)&buf,16,ZT_NL_BUF_SIZE) != 0) {
+ fprintf(stderr,"malloc failed!\n");
+ ::exit(1);
if (!buf) {
fprintf(stderr,"malloc failed!\n");
::exit(1);
@@ -14,7 +14,7 @@ BuildRequires: systemd
BuildRequires: systemd
%endif
-Requires: iproute
+Requires: iproute libstdc++
%if 0%{?rhel} >= 7
Requires: systemd