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
// 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"
// zwrite() might cause data loss, for this reason, sockets will SO_LINGER for
// stack and ZT service, calling a zts_close() immediately after a "successful"
// zts_write() might cause data loss, for this reason, sockets will SO_LINGER for
// a short period of time by default as a precaution.
#define ZT_SOCK_BEHAVIOR_LINGER false
#define ZT_SOCK_BEHAVIOR_LINGER_TIME 2 // s
#define ZT_SOCK_BEHAVIOR_LINGER true
#define ZT_SOCK_BEHAVIOR_LINGER_TIME 1 // s
/****************************************************************************/
/* Socket API Signatures */

View File

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

View File

@@ -1022,7 +1022,7 @@ public:
for(it = _nets.begin(); it != _nets.end(); it++) {
if(it->second.tap) {
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;
}
}