Commit Diff


commit - 0321d839ea813adcaafa0dbe6463e5caa654bf1e
commit + 75e29febe513405dbcb534883dc76a7096a207ec
blob - bf3790cfaa6690bd77a8390a5557cb1abf5f1a90
blob + bcd13936c3fc08945fb398d33572a9e93224a300
--- twind.c
+++ twind.c
@@ -92,6 +92,9 @@ static void
 signal_handler(int signal)
 {
 	switch (signal) {
+		case SIGHUP:
+			reload_log_files = 1;
+			break;
 		case SIGINT:
 		case SIGTERM:
 			organize_termination();
@@ -146,6 +149,8 @@ main(int argc, char *argv[])
 		fatalx("signal");
 	if (signal(SIGTERM, signal_handler) == SIG_ERR)
 		fatalx("signal");
+	if (signal(SIGHUP, signal_handler) == SIG_ERR)
+		fatalx("signal");
 
 	open_sockets(tcpsock, port);
 
@@ -252,6 +257,13 @@ handle_incoming_connections(int counter, int tcpsock, 
 	memset(str, 0, sizeof(str));
 
 	while (1) {
+		if (reload_log_files == 1) {
+				reload_log_files = 0;
+				log_debug("Re-open log files");
+				close_twind_logs();
+				open_twind_logs();
+		}
+
 		ret = accept(tcpsock, (struct sockaddr *)&addr, &len);
 		if (ret < 0)
 			fatalx("Error when accepting connection");
blob - 9d9fce3ad479da1a3dd3a06969b71160dba3500b
blob + eb73199111119800518bc4d674a9e74a7200d00b
--- twind.h
+++ twind.h
@@ -21,6 +21,8 @@
 
 #include <openssl/ssl.h>
 
+#include <signal.h>
+
 #define VERSION "2021.a"
 #define MAXREQLEN 1025
 #define _PATH_TWIND_ACCESS_LOG "logs/access.log"
@@ -52,6 +54,8 @@ struct client_connection {
 	char client_addr[INET6_ADDRSTRLEN];
 };
 
+static volatile sig_atomic_t reload_log_files = 0;
+
 /* gemini.c */
 int check_gemini_file(const char *);
 int send_response(SSL*, int, const char *, const char *);