From 902d985ca828587236d90a56a3b29b4ab4ffa945 Mon Sep 17 00:00:00 2001 From: Wild Dragon Dev Date: Wed, 3 Jun 2026 20:05:55 +0000 Subject: [PATCH] framecache: add SIGPIPE ignore, signal logging, and init:true for stable POST handling --- docker-compose.worker.yml | 1 + services/framecache/src/framecache.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docker-compose.worker.yml b/docker-compose.worker.yml index cb0c6af..61bce79 100644 --- a/docker-compose.worker.yml +++ b/docker-compose.worker.yml @@ -169,6 +169,7 @@ services: build: ./services/framecache profiles: [capture] restart: unless-stopped + init: true ipc: host shm_size: '${FC_SHM_SIZE_GB:-40}gb' environment: diff --git a/services/framecache/src/framecache.c b/services/framecache/src/framecache.c index 0cdfe47..6210107 100644 --- a/services/framecache/src/framecache.c +++ b/services/framecache/src/framecache.c @@ -315,13 +315,15 @@ static void request_completed(void *cls, /* ── main ──────────────────────────────────────────────────────────── */ static volatile int g_running = 1; +static volatile int g_received_signal = 0; -static void on_signal(int sig) { (void)sig; g_running = 0; } +static void on_signal(int sig) { g_received_signal = sig; g_running = 0; } int main(void) { signal(SIGINT, on_signal); signal(SIGTERM, on_signal); + signal(SIGPIPE, SIG_IGN); /* Ensure /dev/shm/framecache exists */ mkdir("/dev/shm/framecache", 0755); @@ -352,7 +354,7 @@ int main(void) nanosleep(&ts, NULL); } - fprintf(stderr, "[framecache] shutting down\n"); + fprintf(stderr, "[framecache] shutting down (signal %d)\n", g_received_signal); /* Destroy all active slots */ for (int i = 0; i < FC_MAX_SLOTS; i++) {