iA more robust accept() handling. - 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 8eff8ae493a6f02e1a2b11cf69ac6cc84e4cace5 /scm/geomyidae/commit/8eff8ae493a6f02e1a2b11cf69ac6cc84e4cace5.gph bitreich.org 70 1parent b54cf16cabdb38610da974759ce274be20e480f0 /scm/geomyidae/commit/b54cf16cabdb38610da974759ce274be20e480f0.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Mon, 28 Feb 2011 00:46:09 +0100 Err bitreich.org 70 i Err bitreich.org 70 iA more robust accept() handling. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M main.c | 13 ++++++++++--- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 10 insertions(+), 3 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@@ -19,6 +19,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@@ -373,9 +374,15 @@ main(int argc, char *argv[]) Err bitreich.org 70 i while(running) { Err bitreich.org 70 i sock = accept(list, (struct sockaddr *)&clt, &cltlen); Err bitreich.org 70 i if(sock < 0) { Err bitreich.org 70 i- perror("accept"); Err bitreich.org 70 i- close(list); Err bitreich.org 70 i- return 1; Err bitreich.org 70 i+ switch(errno) { Err bitreich.org 70 i+ case ECONNABORTED: Err bitreich.org 70 i+ case EINTR: Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ perror("accept"); Err bitreich.org 70 i+ close(list); Err bitreich.org 70 i+ return 1; Err bitreich.org 70 i+ } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i getnameinfo((struct sockaddr *)&clt, cltlen, clienth, Err bitreich.org 70 .