iSimplify socket binding - 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 87e1fba0998bc690d6ebb33ca8b4087a5d97af1a /scm/geomyidae/commit/87e1fba0998bc690d6ebb33ca8b4087a5d97af1a.gph bitreich.org 70 1parent a86a1cbb6590aed14e144d5abde60205654324d8 /scm/geomyidae/commit/a86a1cbb6590aed14e144d5abde60205654324d8.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Thu, 30 Aug 2018 21:17:33 +0200 Err bitreich.org 70 i Err bitreich.org 70 iSimplify socket binding 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 | 32 +++++++++++-------------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 11 insertions(+), 21 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@@ -361,7 +361,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i struct addrinfo hints; Err bitreich.org 70 i struct sockaddr_storage clt; Err bitreich.org 70 i socklen_t cltlen; Err bitreich.org 70 i- int sock, dofork, v4, v6, usechroot, nocgi; Err bitreich.org 70 i+ int sock, dofork, inetf, usechroot, nocgi; Err bitreich.org 70 i char *port, *base, clienth[NI_MAXHOST], clientp[NI_MAXSERV]; Err bitreich.org 70 i char *user, *group, *bindip, *ohost, *sport; Err bitreich.org 70 i struct passwd *us; Err bitreich.org 70 i@@ -377,17 +377,16 @@ main(int argc, char *argv[]) Err bitreich.org 70 i bindip = NULL; Err bitreich.org 70 i ohost = NULL; Err bitreich.org 70 i sport = NULL; Err bitreich.org 70 i- v4 = 1; Err bitreich.org 70 i- v6 = 1; Err bitreich.org 70 i+ inetf = AF_INET6; Err bitreich.org 70 i usechroot = 0; Err bitreich.org 70 i nocgi = 0; Err bitreich.org 70 i Err bitreich.org 70 i ARGBEGIN { Err bitreich.org 70 i case '4': Err bitreich.org 70 i- v6 = 0; Err bitreich.org 70 i+ inetf = AF_INET; Err bitreich.org 70 i break; Err bitreich.org 70 i case '6': Err bitreich.org 70 i- v4 = 0; Err bitreich.org 70 i+ inetf = AF_INET6; Err bitreich.org 70 i break; Err bitreich.org 70 i case 'b': Err bitreich.org 70 i base = EARGF(usage()); Err bitreich.org 70 i@@ -485,31 +484,22 @@ main(int argc, char *argv[]) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i memset(&hints, 0, sizeof(hints)); Err bitreich.org 70 i+ hints.ai_family = inetf; Err bitreich.org 70 i hints.ai_flags = AI_PASSIVE; Err bitreich.org 70 i hints.ai_socktype = SOCK_STREAM; Err bitreich.org 70 i if (bindip) Err bitreich.org 70 i hints.ai_flags |= AI_CANONNAME; Err bitreich.org 70 i Err bitreich.org 70 i- listfd = -1; Err bitreich.org 70 i- if (v6) { Err bitreich.org 70 i- hints.ai_family = PF_INET6; Err bitreich.org 70 i- listfd = getlistenfd(&hints, bindip, port); Err bitreich.org 70 i- if (!v4 && listfd < 0) { Err bitreich.org 70 i- perror("getlistenfd6"); Err bitreich.org 70 i- return 1; Err bitreich.org 70 i- } Err bitreich.org 70 i- } Err bitreich.org 70 i- if (v4 && listfd < 0) { Err bitreich.org 70 i- hints.ai_family = PF_INET; Err bitreich.org 70 i- listfd = getlistenfd(&hints, bindip, port); Err bitreich.org 70 i- if (listfd < 0) { Err bitreich.org 70 i- perror("getlistenfd4"); Err bitreich.org 70 i- return 1; Err bitreich.org 70 i+ if ((listfd = getlistenfd(&hints, bindip, port)) < 0) { Err bitreich.org 70 i+ if (inetf == AF_UNSPEC) { Err bitreich.org 70 i+ hints.ai_family = AF_INET; Err bitreich.org 70 i+ listfd = getlistenfd(&hints, bindip, port); Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i if (listfd < 0) { Err bitreich.org 70 i- fprintf(stderr, "Unable to got a binding socket. " Err bitreich.org 70 i+ fprintf(stderr, "Unable to get a binding socket. " Err bitreich.org 70 i "Look at bindip and the tcp port.\n"); Err bitreich.org 70 i+ perror("getlistenfd"); Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .