iAdd lingerie to all socks. - 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 89ed3ff980bfd8b1a6405be67565b1de3b393ac3 /scm/geomyidae/commit/89ed3ff980bfd8b1a6405be67565b1de3b393ac3.gph bitreich.org 70
1parent 41aaba3aa82bbe810c1008246b2b226e7395fe1e /scm/geomyidae/commit/41aaba3aa82bbe810c1008246b2b226e7395fe1e.gph bitreich.org 70
hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70
iDate: Sun, 23 Jul 2023 14:23:26 +0200 Err bitreich.org 70
i Err bitreich.org 70
iAdd lingerie to all socks. Err bitreich.org 70
i Err bitreich.org 70
i* fix TLS connection shutdown Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M ind.c | 28 ++++++++++++++++++++++++++++ Err bitreich.org 70
i M ind.h | 1 + Err bitreich.org 70
i M main.c | 34 +++---------------------------- Err bitreich.org 70
i Err bitreich.org 70
i3 files changed, 32 insertions(+), 31 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@@ -630,3 +630,31 @@ humantime(const time_t *clock) Err bitreich.org 70
i return buf; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+void Err bitreich.org 70
i+lingersock(int sock) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ struct linger lingerie; Err bitreich.org 70
i+ int j; Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* Err bitreich.org 70
i+ * On close only wait for at maximum 60 seconds for all data to be Err bitreich.org 70
i+ * transmitted before forcefully closing the connection. Err bitreich.org 70
i+ */ Err bitreich.org 70
i+ lingerie.l_onoff = 1; Err bitreich.org 70
i+ lingerie.l_linger = 60; Err bitreich.org 70
i+ setsockopt(sock, SOL_SOCKET, SO_LINGER, Err bitreich.org 70
i+ &lingerie, sizeof(lingerie)); Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* Err bitreich.org 70
i+ * Force explicit flush of buffers using TCP_NODELAY. Err bitreich.org 70
i+ */ Err bitreich.org 70
i+ j = 1; Err bitreich.org 70
i+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &j, sizeof(int)); Err bitreich.org 70
i+ waitforpendingbytes(sock); Err bitreich.org 70
i+ j = 0; Err bitreich.org 70
i+ setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &j, sizeof(int)); Err bitreich.org 70
i+ shutdown(sock, SHUT_RDWR); Err bitreich.org 70
i+ Err bitreich.org 70
i+ return; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
1diff --git a/ind.h b/ind.h /scm/geomyidae/file/ind.h.gph bitreich.org 70
i@@ -54,6 +54,7 @@ void setcgienviron(char *file, char *path, char *port, char *base, Err bitreich.org 70
i char *bhost, int istls, char *sel, char *traverse); Err bitreich.org 70
i char *humansize(off_t n); Err bitreich.org 70
i char *humantime(const time_t *clock); Err bitreich.org 70
i+void lingersock(int sock); Err bitreich.org 70
i Err bitreich.org 70
i #endif 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@@ -589,7 +589,6 @@ main(int argc, char *argv[]) Err bitreich.org 70
i { Err bitreich.org 70
i struct addrinfo hints; Err bitreich.org 70
i struct sockaddr_storage clt, slt; Err bitreich.org 70
i- struct linger lingerie; Err bitreich.org 70
i socklen_t cltlen, sltlen; Err bitreich.org 70
i int sock, dofork = 1, inetf = AF_UNSPEC, usechroot = 0, Err bitreich.org 70
i nocgi = 0, errno_save, nbindips = 0, i, j, Err bitreich.org 70
i@@ -1147,15 +1146,11 @@ read_selector_again: Err bitreich.org 70
i tls_free(tlsclientctx); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+ lingersock(tlssocks[tlsclientreader? 0 : 1]); Err bitreich.org 70
i close(tlssocks[tlsclientreader? 0 : 1]); Err bitreich.org 70
i Err bitreich.org 70
i if (tlsclientreader) { Err bitreich.org 70
i- /* Err bitreich.org 70
i- * Only one process needs Err bitreich.org 70
i- * to do this. Err bitreich.org 70
i- */ Err bitreich.org 70
i- waitforpendingbytes(sock); Err bitreich.org 70
i- shutdown(sock, SHUT_RDWR); Err bitreich.org 70
i+ lingersock(sock); Err bitreich.org 70
i close(sock); Err bitreich.org 70
i } Err bitreich.org 70
i return 0; Err bitreich.org 70
i@@ -1169,30 +1164,7 @@ read_selector_again: Err bitreich.org 70
i clienth, clientp, serverh, serverp, Err bitreich.org 70
i nocgi, istls); Err bitreich.org 70
i Err bitreich.org 70
i- if (!istls) { Err bitreich.org 70
i- /* Err bitreich.org 70
i- * On close only wait for at maximum 60 Err bitreich.org 70
i- * seconds for all data to be transmitted Err bitreich.org 70
i- * before forcefully closing the Err bitreich.org 70
i- * connection. Err bitreich.org 70
i- */ Err bitreich.org 70
i- lingerie.l_onoff = 1; Err bitreich.org 70
i- lingerie.l_linger = 60; Err bitreich.org 70
i- setsockopt(sock, SOL_SOCKET, SO_LINGER, Err bitreich.org 70
i- &lingerie, sizeof(lingerie)); Err bitreich.org 70
i- /* Err bitreich.org 70
i- * Force explict flush of buffers using Err bitreich.org 70
i- * TCP_NODELAY. Err bitreich.org 70
i- */ Err bitreich.org 70
i- j = 1; Err bitreich.org 70
i- setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, Err bitreich.org 70
i- &j, sizeof(int)); Err bitreich.org 70
i- waitforpendingbytes(sock); Err bitreich.org 70
i- j = 0; Err bitreich.org 70
i- setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, Err bitreich.org 70
i- &j, sizeof(int)); Err bitreich.org 70
i- shutdown(sock, SHUT_RDWR); Err bitreich.org 70
i- } Err bitreich.org 70
i+ lingersock(sock); Err bitreich.org 70
i close(sock); Err bitreich.org 70
i Err bitreich.org 70
i if (loglvl & CONN) { Err bitreich.org 70
.
Response:
text/plain