summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-09-02 22:04:57 -0400
committerJune McEnroe <june@causal.agency>2021-09-02 22:04:57 -0400
commit53c1ebff35dc81263d4491753a6dd9676f5b9120 (patch)
tree5bab5aec982ea9a8fdea24eff01643ce4ae2d180
parentSeparate client QUIT and ERROR messages (diff)
downloadpounce-53c1ebff35dc81263d4491753a6dd9676f5b9120.tar.gz
pounce-53c1ebff35dc81263d4491753a6dd9676f5b9120.zip
Be nice and call tls_close(3) on the server
Diffstat (limited to '')
-rw-r--r--bounce.c2
-rw-r--r--bounce.h1
-rw-r--r--server.c5
3 files changed, 8 insertions, 0 deletions
diff --git a/bounce.c b/bounce.c
index 71433ee..416c228 100644
--- a/bounce.c
+++ b/bounce.c
@@ -349,6 +349,7 @@ int main(int argc, char *argv[]) {
 		serverConfig(true, NULL, NULL, NULL);
 		serverConnect(serverBindHost, host, port);
 		serverPrintCert();
+		serverClose();
 		return EX_OK;
 	}
 
@@ -564,6 +565,7 @@ int main(int argc, char *argv[]) {
 	}
 
 	serverFormat("QUIT :%s\r\n", quit);
+	serverClose();
 	for (size_t i = clientIndex; i < event.len; ++i) {
 		struct Client *client = event.clients[i];
 		if (!client->need) {
diff --git a/bounce.h b/bounce.h
index 434e443..4144324 100644
--- a/bounce.h
+++ b/bounce.h
@@ -198,6 +198,7 @@ void serverFormat(const char *format, ...)
 void serverEnqueue(const char *format, ...)
 	__attribute__((format(printf, 1, 2)));
 void serverDequeue(void);
+void serverClose(void);
 
 enum Need {
 	BIT(NeedHandshake),
diff --git a/server.c b/server.c
index aa17cde..6640f8f 100644
--- a/server.c
+++ b/server.c
@@ -155,6 +155,11 @@ int serverConnect(const char *bindHost, const char *host, const char *port) {
 	return sock;
 }
 
+void serverClose(void) {
+	tls_close(client);
+	tls_free(client);
+}
+
 void serverPrintCert(void) {
 	size_t len;
 	const byte *pem = tls_peer_cert_chain_pem(client, &len);