From 0ac64baace62a8052595b1745a2df6ead3d467a6 Mon Sep 17 00:00:00 2001 From: Johannes Wienke Date: Fri, 7 Feb 2014 11:43:15 +0100 Subject: [PATCH] Clean up socket file on signals --- daemon/spread.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/daemon/spread.c b/daemon/spread.c index c5586ec..299aa2b 100644 --- a/daemon/spread.c +++ b/daemon/spread.c @@ -53,6 +53,7 @@ # include # include # include +# include #endif #ifdef ARCH_PC_WIN95 @@ -77,6 +78,17 @@ void ip_init(void); /* acp-permit.c: */ void permit_init(void); +void Cleanup_Socket(int sig) +{ + proc My = Conf_my(); + char name[80]; + snprintf( name, sizeof(name), "%s/%hu", SP_UNIX_SOCKET, My.port ); + printf( "Cleaning up socket file %s\n", name ); + unlink( name ); + signal ( sig, SIG_DFL ); + raise( sig ); +} + #ifdef USE_SPREAD_MAIN int SpreadMain(int argc, char *argv[]) #else @@ -219,6 +231,9 @@ int main(int argc, char *argv[]) #endif /* ARCH_PC_WIN95 */ + signal( SIGTERM, Cleanup_Socket ); + signal( SIGINT, Cleanup_Socket ); + E_handle_events(); return 0; -- 1.7.9.5