Merge pull request #12 from gdamore/gdamore-fixes
Fix warnings and errors found by clang
This commit is contained in:
@@ -425,7 +425,7 @@ namespace ZeroTier
|
||||
* Gets a pointer to a pico_socket given a file descriptor
|
||||
*/
|
||||
#if defined(STACK_PICO)
|
||||
int zts_get_pico_socket(int fd, struct pico_socket *s);
|
||||
int zts_get_pico_socket(int fd, struct pico_socket **s);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@@ -878,8 +878,8 @@ int zts_setsockopt(ZT_SETSOCKOPT_SIG)
|
||||
}
|
||||
|
||||
// Disable Nagle's algorithm
|
||||
struct pico_socket *p;
|
||||
err = zts_get_pico_socket(fd, p);
|
||||
struct pico_socket *p = NULL;
|
||||
err = zts_get_pico_socket(fd, &p);
|
||||
if(p) {
|
||||
int value = 1;
|
||||
if((err = pico_socket_setoption(p, PICO_TCP_NODELAY, &value)) < 0) {
|
||||
@@ -1520,45 +1520,43 @@ namespace ZeroTier {
|
||||
/****************************************************************************/
|
||||
|
||||
#if defined(STACK_PICO)
|
||||
int zts_get_pico_socket(int fd, struct pico_socket *s)
|
||||
int zts_get_pico_socket(int fd, struct pico_socket *s)
|
||||
{
|
||||
int err = 0;
|
||||
if(!zt1Service) {
|
||||
DEBUG_ERROR("cannot locate socket. service not started. call zts_start(path) first");
|
||||
errno = EBADF;
|
||||
err = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
int err = 0;
|
||||
if(!zt1Service) {
|
||||
DEBUG_ERROR("cannot shutdown socket. service not started. call zts_start(path) first");
|
||||
errno = EBADF;
|
||||
err = -1;
|
||||
ZeroTier::_multiplexer_lock.lock();
|
||||
// First, look for for unassigned connections
|
||||
ZeroTier::Connection *conn = ZeroTier::unmap[fd];
|
||||
if(conn)
|
||||
{
|
||||
*s = conn->picosock;
|
||||
err = 1; // unassigned
|
||||
}
|
||||
else
|
||||
{
|
||||
ZeroTier::_multiplexer_lock.lock();
|
||||
// First, look for for unassigned connections
|
||||
ZeroTier::Connection *conn = ZeroTier::unmap[fd];
|
||||
// Since we found an unassigned connection, we don't need to consult the stack or tap
|
||||
// during closure - it isn't yet stitched into the clockwork
|
||||
if(conn)
|
||||
std::pair<ZeroTier::Connection*, ZeroTier::SocketTap*> *p = ZeroTier::fdmap[fd];
|
||||
if(!p)
|
||||
{
|
||||
s = conn->picosock;
|
||||
return 1; // unassigned
|
||||
DEBUG_ERROR("unable to locate connection pair.");
|
||||
errno = EBADF;
|
||||
err = -1;
|
||||
}
|
||||
else // assigned
|
||||
else
|
||||
{
|
||||
std::pair<ZeroTier::Connection*, ZeroTier::SocketTap*> *p = ZeroTier::fdmap[fd];
|
||||
if(!p)
|
||||
{
|
||||
DEBUG_ERROR("unable to locate connection pair.");
|
||||
errno = EBADF;
|
||||
err = -1;
|
||||
}
|
||||
else // found everything, begin closure
|
||||
{
|
||||
s = p->first->picosock;
|
||||
return 0;
|
||||
}
|
||||
*s = p->first->picosock;
|
||||
err = 0; // assigned
|
||||
}
|
||||
ZeroTier::_multiplexer_lock.unlock();
|
||||
}
|
||||
return err;
|
||||
ZeroTier::_multiplexer_lock.unlock();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
int zts_nsockets()
|
||||
|
||||
@@ -604,11 +604,13 @@ namespace ZeroTier {
|
||||
int err = 0;
|
||||
if(conn->socket_family == AF_INET) {
|
||||
struct pico_ip4 zaddr;
|
||||
uint32_t tempaddr;
|
||||
memset(&zaddr, 0, sizeof (struct pico_ip4));
|
||||
struct sockaddr_in *in4 = (struct sockaddr_in*)addr;
|
||||
char ipv4_str[INET_ADDRSTRLEN];
|
||||
inet_ntop(AF_INET, (const void *)&in4->sin_addr.s_addr, ipv4_str, INET_ADDRSTRLEN);
|
||||
pico_string_to_ipv4(ipv4_str, &(zaddr.addr));
|
||||
pico_string_to_ipv4(ipv4_str, &tempaddr);
|
||||
zaddr.addr = tempaddr;
|
||||
//DEBUG_EXTRA("addr=%s:%d", ipv4_str, Utils::ntoh(in4->sin_port));
|
||||
err = pico_socket_bind(conn->picosock, &zaddr, (uint16_t *)&(in4->sin_port));
|
||||
}
|
||||
@@ -798,6 +800,11 @@ namespace ZeroTier {
|
||||
}
|
||||
|
||||
int buf_w = conn->TXbuf->write((const unsigned char*)data, len);
|
||||
if (buf_w != len) {
|
||||
// because we checked ZT_TCP_TX_BUF_SZ above, this should not happen
|
||||
DEBUG_ERROR("TX wrote only %d but expected to write %d", buf_w, len);
|
||||
exit(0);
|
||||
}
|
||||
//DEBUG_INFO("TXbuf->count() = %d", conn->TXbuf->count());
|
||||
int txsz = conn->TXbuf->count();
|
||||
|
||||
@@ -911,7 +918,7 @@ namespace ZeroTier {
|
||||
*/
|
||||
char *picoTCP::beautify_pico_state(int state)
|
||||
{
|
||||
char state_str[512];
|
||||
static char state_str[512];
|
||||
char *str_ptr = state_str;
|
||||
|
||||
if(state & PICO_SOCKET_STATE_UNDEFINED) {
|
||||
|
||||
Reference in New Issue
Block a user