Be more verbose
This commit is contained in:
63
glorytun.c
63
glorytun.c
@@ -139,11 +139,10 @@ static int sk_create (struct addrinfo *res, int(*func)(int, struct addrinfo *))
|
||||
|
||||
static int sk_accept (int fd)
|
||||
{
|
||||
struct sockaddr_storage addr_storage;
|
||||
struct sockaddr *addr = (struct sockaddr *)&addr_storage;
|
||||
socklen_t addr_size = sizeof(addr_storage);
|
||||
struct sockaddr_storage addr;
|
||||
socklen_t addr_size = sizeof(addr);
|
||||
|
||||
int ret = accept(fd, addr, &addr_size);
|
||||
int ret = accept(fd, (struct sockaddr *)&addr, &addr_size);
|
||||
|
||||
if (ret==-1 && errno!=EINTR)
|
||||
perror("accept");
|
||||
@@ -151,6 +150,41 @@ static int sk_accept (int fd)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static char *sk_get_name (int fd)
|
||||
{
|
||||
struct sockaddr_storage addr;
|
||||
socklen_t addr_size = sizeof(addr);
|
||||
|
||||
if (getpeername(fd, (struct sockaddr *)&addr, &addr_size)==-1) {
|
||||
perror("getpeername");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char host[64] = {0};
|
||||
char port[32] = {0};
|
||||
|
||||
int ret = getnameinfo((struct sockaddr *)&addr, addr_size,
|
||||
host, sizeof(host),
|
||||
port, sizeof(port),
|
||||
NI_NUMERICHOST|NI_NUMERICSERV);
|
||||
|
||||
switch (ret) {
|
||||
case 0:
|
||||
break;
|
||||
case EAI_MEMORY:
|
||||
errno = ENOMEM;
|
||||
case EAI_SYSTEM:
|
||||
perror("getnameinfo");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *const strs[] = {
|
||||
host, ".", port
|
||||
};
|
||||
|
||||
return str_cat(strs, COUNT(strs));
|
||||
}
|
||||
|
||||
static struct addrinfo *ai_create (const char *host, const char *port, int listener)
|
||||
{
|
||||
if (!port || !port[0]) {
|
||||
@@ -171,10 +205,9 @@ static struct addrinfo *ai_create (const char *host, const char *port, int liste
|
||||
|
||||
int ret = getaddrinfo(host, port, &hints, &ai);
|
||||
|
||||
if (!ret)
|
||||
return ai;
|
||||
|
||||
switch (ret) {
|
||||
case 0:
|
||||
return ai;
|
||||
case EAI_MEMORY:
|
||||
errno = ENOMEM;
|
||||
case EAI_SYSTEM:
|
||||
@@ -621,6 +654,13 @@ int main (int argc, char **argv)
|
||||
continue;
|
||||
}
|
||||
|
||||
char *sockname = sk_get_name(sock.fd);
|
||||
|
||||
if (!sockname)
|
||||
goto restart;
|
||||
|
||||
fprintf(stderr, "%s: connected\n", sockname);
|
||||
|
||||
fd_set_nonblock(sock.fd);
|
||||
sk_set_nodelay(sock.fd);
|
||||
sk_set_congestion(sock.fd, congestion);
|
||||
@@ -628,8 +668,6 @@ int main (int argc, char **argv)
|
||||
struct crypto_ctx ctx;
|
||||
gt_setup_crypto(&ctx, sock.fd, listener);
|
||||
|
||||
printf("running...\n");
|
||||
|
||||
struct pollfd fds[] = {
|
||||
{ .fd = tun.fd, .events = POLLIN },
|
||||
{ .fd = sock.fd, .events = POLLIN },
|
||||
@@ -719,7 +757,7 @@ int main (int argc, char **argv)
|
||||
break;
|
||||
|
||||
if (decrypt_packet(&ctx, tunw.buf, ip_size, &sock.recv)) {
|
||||
fprintf(stderr, "message could not be verified!\n");
|
||||
fprintf(stderr, "%s: message could not be verified!\n", sockname);
|
||||
goto restart;
|
||||
}
|
||||
|
||||
@@ -743,6 +781,11 @@ int main (int argc, char **argv)
|
||||
}
|
||||
|
||||
restart:
|
||||
if (sockname) {
|
||||
free(sockname);
|
||||
sockname = NULL;
|
||||
}
|
||||
|
||||
close(sock.fd);
|
||||
sock.fd = -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user