Merge pull request #12 from gdamore/gdamore-fixes

Fix warnings and errors found by clang
This commit is contained in:
Joseph Henry
2017-07-26 00:08:45 -07:00
committed by GitHub
3 changed files with 39 additions and 34 deletions

View File

@@ -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
/**

View File

@@ -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()

View File

@@ -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) {