Connections now have a default SO_LINGER=2

This commit is contained in:
Joseph Henry
2017-05-02 09:32:10 -07:00
parent 7867a157d0
commit 9a4ab4a85c

View File

@@ -30,6 +30,7 @@
// SDK // SDK
#include "ZeroTierSDK.h" #include "ZeroTierSDK.h"
#include "SocketTap.hpp" #include "SocketTap.hpp"
#include "RingBuffer.hpp"
namespace ZeroTier { namespace ZeroTier {
@@ -38,6 +39,10 @@ namespace ZeroTier {
*/ */
struct Connection struct Connection
{ {
//circular_buffer<char> crbuf = circular_buffer<char>(ZT_TCP_RX_BUF_SZ);
//circular_buffer<char> ctbuf = circular_buffer<char>(ZT_TCP_TX_BUF_SZ);
int pid; int pid;
PhySocket *sock; PhySocket *sock;
struct pico_socket *picosock; struct pico_socket *picosock;
@@ -72,6 +77,14 @@ namespace ZeroTier {
} }
sdk_fd = fdpair[0]; sdk_fd = fdpair[0];
app_fd = fdpair[1]; app_fd = fdpair[1];
if(ZT_SOCK_BEHAVIOR_LINGER) {
struct linger so_linger;
so_linger.l_onoff = true;
so_linger.l_linger = ZT_SOCK_BEHAVIOR_LINGER_TIME;
if(zts_setsockopt(app_fd, SOL_SOCKET, SO_LINGER, &so_linger, sizeof so_linger) < 0) {
DEBUG_ERROR("error setsockopt (%d)", errno);
}
}
} }
~Connection() ~Connection()
{ {