Pi66

sta
minimal & simple status monitoring app.
git clone https://git.pi66.xyz/sta

← back to log

fix: clean up stale socket on unexpected termination

author: pi66
date: 2026-03-28 19:43
hash: 269cce4bc50d77e29f898556ae94cb41c5fe5de9

Diffstat:

M

sta.c
8 ++++++++++++++++++++++--------
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
diff --git a/sta.c b/sta.c
index b54071f..a69c75d 100644
--- a/sta.c
+++ b/sta.c
@@ -235,8 +235,12 @@ int main(int argc, char const *argv[])

    for (int i = 1; i < argc; ++i) {
        if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--server")) {
-           if (access(SOCKET_PATH, F_OK) == 0)
-               die("ERROR: socket exists in " SOCKET_PATH);
+           if (access(SOCKET_PATH, F_OK) == 0){
+               if ( connect(sock, (struct sockaddr *)&addr, sizeof(addr) ) == 0 )
+                   unlink(SOCKET_PATH);
+               else
+                   die("ERROR: socket exists in " SOCKET_PATH);
+           }
            run_server(&addr, sock, list);
        }
    }