SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/geomyidae/commit/89ed3ff980bf...
Content-Typetext/plain; charset=utf-8