iSimplify the timeout logic. Make comments more clear. - 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 f6d49dbdcefb8ff41d19939401efe8d11054e592 /scm/geomyidae/commit/f6d49dbdcefb8ff41d19939401efe8d11054e592.gph bitreich.org 70 1parent c8c0cd126424dfd23ff7df6d60f32e1bb18deff6 /scm/geomyidae/commit/c8c0cd126424dfd23ff7df6d60f32e1bb18deff6.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 18 Feb 2018 11:23:48 +0100 Err bitreich.org 70 i Err bitreich.org 70 iSimplify the timeout logic. Make comments more clear. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 27 +++++++++++++++------------ Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 15 insertions(+), 12 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -78,29 +78,32 @@ pendingbytes(int sock) Err bitreich.org 70 i void Err bitreich.org 70 i waitforpendingbytes(int sock) Err bitreich.org 70 i { Err bitreich.org 70 i- int npending, opending, tries; Err bitreich.org 70 i+ int npending, opending, trytime; Err bitreich.org 70 i Err bitreich.org 70 i- npending = opending = tries = 0; Err bitreich.org 70 i+ npending = opending = 0; Err bitreich.org 70 i+ trytime = 10; Err bitreich.org 70 i Err bitreich.org 70 i /* Err bitreich.org 70 i- * Wait until there is nothing pending or the connection stalled for Err bitreich.org 70 i- * 30 seconds. Err bitreich.org 70 i+ * Wait until there is nothing pending or the connection stalled Err bitreich.org 70 i+ * (nothing was sent) for around 40 seconds. Beware, trytime is Err bitreich.org 70 i+ * an exponential wait. Err bitreich.org 70 i */ Err bitreich.org 70 i- while ((npending = pendingbytes(sock)) > 0 && tries < 30000000) { Err bitreich.org 70 i+ while ((npending = pendingbytes(sock)) > 0 && trytime < 20000000) { Err bitreich.org 70 i if (opending != 0) { Err bitreich.org 70 i if (opending != npending) { Err bitreich.org 70 i- tries = 0; Err bitreich.org 70 i+ trytime = 10; Err bitreich.org 70 i } else { Err bitreich.org 70 i- if (tries == 0) { Err bitreich.org 70 i- tries = 1; Err bitreich.org 70 i- } else { Err bitreich.org 70 i- tries += tries; Err bitreich.org 70 i- } Err bitreich.org 70 i+ /* Err bitreich.org 70 i+ * Exponentially increase the usleep Err bitreich.org 70 i+ * waiting time to not waste CPU Err bitreich.org 70 i+ * resources. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+ trytime += trytime; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i opending = npending; Err bitreich.org 70 i Err bitreich.org 70 i- usleep(tries); Err bitreich.org 70 i+ usleep(trytime); Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .