about summary refs log tree commit diff
diff options
context:
space:
mode:
-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);