iImprove tcp connexion logging - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 42ed4146e6040a362e67369d862daabff0a01f4b /scm/geomyidae/commit/42ed4146e6040a362e67369d862daabff0a01f4b.gph bitreich.org 70 1parent eaa890e1ff66d546a86e66dda6ea5c71a239a2df /scm/geomyidae/commit/eaa890e1ff66d546a86e66dda6ea5c71a239a2df.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Fri, 16 Jun 2017 18:07:23 +0200 Err bitreich.org 70 i Err bitreich.org 70 iImprove tcp connexion logging Err bitreich.org 70 i Err bitreich.org 70 iLog events when bound to an ip or when it fails, and when a client Err bitreich.org 70 idisconnects. Err bitreich.org 70 i Err bitreich.org 70 iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M main.c | 21 +++++++++++++++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 19 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -22,6 +22,7 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i Err bitreich.org 70 i #include "ind.h" Err bitreich.org 70 i #include "handlr.h" Err bitreich.org 70 i@@ -266,7 +267,9 @@ initsignals(void) Err bitreich.org 70 i int Err bitreich.org 70 i getlistenfd(struct addrinfo *hints, char *bindip, char *port) Err bitreich.org 70 i { Err bitreich.org 70 i+ char addstr[INET6_ADDRSTRLEN]; Err bitreich.org 70 i struct addrinfo *ai, *rp; Err bitreich.org 70 i+ void *sinaddr; Err bitreich.org 70 i int on, listfd; Err bitreich.org 70 i Err bitreich.org 70 i listfd = -1; Err bitreich.org 70 i@@ -286,9 +289,21 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *port) Err bitreich.org 70 i sizeof(on)) < 0) { Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i- if(bind(listfd, rp->ai_addr, rp->ai_addrlen) == 0) Err bitreich.org 70 i+ Err bitreich.org 70 i+ sinaddr = (rp->ai_family == AF_INET) ? Err bitreich.org 70 i+ (void *)&((struct sockaddr_in *)rp->ai_addr)->sin_addr : Err bitreich.org 70 i+ (void *)&((struct sockaddr_in6 *)rp->ai_addr)->sin6_addr; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if(bind(listfd, rp->ai_addr, rp->ai_addrlen) == 0) { Err bitreich.org 70 i+ if(loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, Err bitreich.org 70 i+ addstr, sizeof(addstr))) Err bitreich.org 70 i+ logentry(addstr, port, "-", "listening"); Err bitreich.org 70 i break; Err bitreich.org 70 i+ } Err bitreich.org 70 i close(listfd); Err bitreich.org 70 i+ if(loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, Err bitreich.org 70 i+ addstr, sizeof(addstr))) Err bitreich.org 70 i+ logentry(addstr, port, "-", "could not bind"); Err bitreich.org 70 i } Err bitreich.org 70 i if(rp == nil) Err bitreich.org 70 i return -1; Err bitreich.org 70 i@@ -477,7 +492,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i sizeof(clienth), clientp, sizeof(clientp), Err bitreich.org 70 i NI_NUMERICHOST|NI_NUMERICSERV); Err bitreich.org 70 i Err bitreich.org 70 i- if (loglvl & CONN) Err bitreich.org 70 i+ if(loglvl & CONN) Err bitreich.org 70 i logentry(clienth, clientp, "-", "connected"); Err bitreich.org 70 i Err bitreich.org 70 i switch(fork()) { Err bitreich.org 70 i@@ -501,6 +516,8 @@ main(int argc, char *argv[]) Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i close(sock); Err bitreich.org 70 i+ if(loglvl & CONN) Err bitreich.org 70 i+ logentry(clienth, clientp, "-", "disconnected"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i shutdown(listfd, SHUT_RDWR); Err bitreich.org 70 .