changed SO_LINGER value, added TODOs
This commit is contained in:
@@ -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 */
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user