changed SO_LINGER value, added TODOs

This commit is contained in:
Joseph Henry
2017-05-31 13:27:20 -07:00
parent 10ea71e581
commit 47a80e8954
3 changed files with 25 additions and 7 deletions

View File

@@ -70,12 +70,12 @@
#define ZT_ERR_GENERAL_FAILURE -88 #define ZT_ERR_GENERAL_FAILURE -88
// Since extra time is required to send a mesage via a socket through the // Since extra time is required to send a mesage via a socket through the
// stack and ZT service, calling a zclose() immediately after a "successful" // stack and ZT service, calling a zts_close() immediately after a "successful"
// zwrite() might cause data loss, for this reason, sockets will SO_LINGER for // zts_write() might cause data loss, for this reason, sockets will SO_LINGER for
// a short period of time by default as a precaution. // a short period of time by default as a precaution.
#define ZT_SOCK_BEHAVIOR_LINGER false #define ZT_SOCK_BEHAVIOR_LINGER true
#define ZT_SOCK_BEHAVIOR_LINGER_TIME 2 // s #define ZT_SOCK_BEHAVIOR_LINGER_TIME 1 // s
/****************************************************************************/ /****************************************************************************/
/* Socket API Signatures */ /* Socket API Signatures */

View File

@@ -439,7 +439,7 @@ int zts_connect(ZT_CONNECT_SIG) {
ZeroTier::SocketTap *tap; ZeroTier::SocketTap *tap;
if(conn) { if(conn) {
char ipstr[INET6_ADDRSTRLEN];//, nm_str[INET6_ADDRSTRLEN]; char ipstr[INET6_ADDRSTRLEN];
memset(ipstr, 0, INET6_ADDRSTRLEN); memset(ipstr, 0, INET6_ADDRSTRLEN);
ZeroTier::InetAddress iaddr; ZeroTier::InetAddress iaddr;
@@ -933,10 +933,13 @@ int zts_fcntl(ZT_FCNTL_SIG)
errno = EBADF; errno = EBADF;
err = -1; err = -1;
} }
err = fcntl(fd, cmd, flags); else {
err = fcntl(fd, cmd, flags);
}
return err; return err;
} }
// TODO
ssize_t zts_sendto(ZT_SENDTO_SIG) ssize_t zts_sendto(ZT_SENDTO_SIG)
{ {
DEBUG_INFO("fd = %d", fd); DEBUG_INFO("fd = %d", fd);
@@ -945,9 +948,13 @@ ssize_t zts_sendto(ZT_SENDTO_SIG)
errno = EBADF; errno = EBADF;
err = -1; err = -1;
} }
else {
err = sendto(fd, buf, len, flags, addr, addrlen);
}
return err; return err;
} }
// TODO
ssize_t zts_sendmsg(ZT_SENDMSG_SIG) ssize_t zts_sendmsg(ZT_SENDMSG_SIG)
{ {
DEBUG_INFO("fd = %d", fd); DEBUG_INFO("fd = %d", fd);
@@ -956,9 +963,13 @@ ssize_t zts_sendmsg(ZT_SENDMSG_SIG)
errno = EBADF; errno = EBADF;
err = -1; err = -1;
} }
else {
err = sendmsg(fd, msg, flags);
}
return err; return err;
} }
// TODO
ssize_t zts_recvfrom(ZT_RECVFROM_SIG) ssize_t zts_recvfrom(ZT_RECVFROM_SIG)
{ {
DEBUG_INFO("fd = %d", fd); DEBUG_INFO("fd = %d", fd);
@@ -967,9 +978,13 @@ ssize_t zts_recvfrom(ZT_RECVFROM_SIG)
errno = EBADF; errno = EBADF;
err = -1; err = -1;
} }
else {
err = recvfrom(fd, buf, len, flags, addr, addrlen);
}
return err; return err;
} }
// TODO
ssize_t zts_recvmsg(ZT_RECVMSG_SIG) ssize_t zts_recvmsg(ZT_RECVMSG_SIG)
{ {
DEBUG_INFO("fd = %d", fd); DEBUG_INFO("fd = %d", fd);
@@ -978,6 +993,9 @@ ssize_t zts_recvmsg(ZT_RECVMSG_SIG)
errno = EBADF; errno = EBADF;
err = -1; err = -1;
} }
else {
err = recvmsg(fd, msg, flags);
}
return err; return err;
} }

View File

@@ -1022,7 +1022,7 @@ public:
for(it = _nets.begin(); it != _nets.end(); it++) { for(it = _nets.begin(); it != _nets.end(); it++) {
if(it->second.tap) { if(it->second.tap) {
for(int j=0; j<it->second.tap->_ips.size(); j++) { for(int j=0; j<it->second.tap->_ips.size(); j++) {
if(it->second.tap->_ips[j].isEqualPrefix(addr) || it->second.tap->_ips[j].ipsEqual(addr)) { if(it->second.tap->_ips[j].isEqualPrefix(addr) || it->second.tap->_ips[j].ipsEqual(addr) || it->second.tap->_ips[j].containsAddress(addr)) {
return it->second.tap; return it->second.tap;
} }
} }