Browse Source

Merge pull request #2017 from zerotier/outbound-bytes-fix

Grant Limberg 2 years ago
parent
commit
30799dd73f
1 changed files with 24 additions and 6 deletions
  1. 24 6
      osdep/Phy.hpp

+ 24 - 6
osdep/Phy.hpp

@@ -453,15 +453,33 @@ public:
 	inline bool udpSend(PhySocket *sock,const struct sockaddr *remoteAddress,const void *data,unsigned long len)
 	{
 		PhySocketImpl &sws = *(reinterpret_cast<PhySocketImpl *>(sock));
+		bool sent = false;
 #if defined(_WIN32) || defined(_WIN64)
-		int sent = ((long)::sendto(sws.sock,reinterpret_cast<const char *>(data),len,0,remoteAddress,(remoteAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) == (long)len);
-		Metrics::udp_send += sent;
-		return sent;
+		sent = ((long)::sendto(
+				sws.sock,
+				reinterpret_cast<const char *>(data),
+				len,
+				0,
+				remoteAddress,
+				(remoteAddress->sa_family == AF_INET6) ? 
+					sizeof(struct sockaddr_in6) : 
+					sizeof(struct sockaddr_in)) == (long)len);
 #else
-		ssize_t sent = ((long)::sendto(sws.sock,data,len,0,remoteAddress,(remoteAddress->sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) == (long)len);
-		Metrics::udp_send += sent;
-		return sent;
+		sent = ((long)::sendto(
+				sws.sock,
+				data,
+				len,
+				0,
+				remoteAddress,
+				(remoteAddress->sa_family == AF_INET6) ? 
+					sizeof(struct sockaddr_in6) : 
+				 	sizeof(struct sockaddr_in)) == (long)len);
 #endif
+		if (sent) {
+			Metrics::udp_send += len;
+		}
+
+		return sent;
 	}
 
 #ifdef __UNIX_LIKE__