X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Ftincctl.c;h=4349b79c07ed0d62218ddc69ce9522b96a964a13;hb=51c1639884b409a98a4581a7b661ef65b94e9d86;hp=a0061dce23da8cf9d30ccffccf38d215c84d7410;hpb=6bf3595a915111770b7a167c54ccbca86cfbec78;p=tinc diff --git a/src/tincctl.c b/src/tincctl.c index a0061dce..4349b79c 100644 --- a/src/tincctl.c +++ b/src/tincctl.c @@ -40,7 +40,6 @@ #include "top.h" #ifdef HAVE_MINGW -#define mkdir(a, b) mkdir(a) #define SCRIPTEXTENSION ".bat" #else #define SCRIPTEXTENSION "" @@ -469,7 +468,8 @@ bool recvline(int fd, char *line, size_t len) { char *newline = NULL; if(!fd) -abort(); + abort(); + while(!(newline = memchr(buffer, '\n', blen))) { int result = recv(fd, buffer + blen, sizeof buffer - blen, 0); if(result == -1 && errno == EINTR) @@ -1187,6 +1187,13 @@ static int cmd_pcap(int argc, char *argv[]) { return 0; } +#ifdef SIGINT +static void sigint_handler(int sig) { + fprintf(stderr, "\n"); + shutdown(fd, SHUT_RDWR); +} +#endif + static int cmd_log(int argc, char *argv[]) { if(argc > 2) { fprintf(stderr, "Too many arguments!\n"); @@ -1196,7 +1203,18 @@ static int cmd_log(int argc, char *argv[]) { if(!connect_tincd(true)) return 1; +#ifdef SIGINT + signal(SIGINT, sigint_handler); +#endif + logcontrol(fd, stdout, argc > 1 ? atoi(argv[1]) : -1); + +#ifdef SIGINT + signal(SIGINT, SIG_DFL); +#endif + + close(fd); + fd = -1; return 0; } @@ -1277,6 +1295,7 @@ const var_t variables[] = { {"KeyExpire", VAR_SERVER}, {"LocalDiscovery", VAR_SERVER}, {"MACExpire", VAR_SERVER}, + {"MaxConnectionBurst", VAR_SERVER}, {"MaxOutputBufferSize", VAR_SERVER}, {"MaxTimeout", VAR_SERVER}, {"Mode", VAR_SERVER | VAR_SAFE},