about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2024-02-07 14:34:34 +0100
committerLeah Neukirchen <leah@vuxu.org>2024-02-07 14:34:34 +0100
commit17db992bc5493cc1e7175a7d7c2dd4ca031b00cf (patch)
treef64e56564fe8c95d578a88df937b638660c1abfd
parentb90a6de0b51b60b3c5cf9ae9e3163131f7491807 (diff)
downloadnitro-17db992bc5493cc1e7175a7d7c2dd4ca031b00cf.tar.gz
nitro-17db992bc5493cc1e7175a7d7c2dd4ca031b00cf.tar.xz
nitro-17db992bc5493cc1e7175a7d7c2dd4ca031b00cf.zip
check max services
This needs to be handled more gracefully of course.
-rw-r--r--nitro.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/nitro.c b/nitro.c
index bdca361..31e4186 100644
--- a/nitro.c
+++ b/nitro.c
@@ -77,6 +77,9 @@ enum process_events {
 	// EVNT_DIED,   health check failed
 };
 
+/* max fd usage: 256 services with 256 loggers = 512 fd for logpipes + const. */
+#define MAXSV 512
+
 struct service {
 	char name[64];
 	deadline startstop;
@@ -90,7 +93,7 @@ struct service {
 	enum process_state state;
 	char seen;
 	char islog;
-} services[512];
+} services[MAXSV];
 
 int max_service = 0;
 int controlsock;
@@ -818,6 +821,8 @@ add_service(const char *name)
 
 	if (i == max_service) {
 		max_service++;
+		if (max_service >= MAXSV)
+			assert(!"out of services, nyi");
 
 		strcpy(services[i].name, name);
 		services[i].pid = 0;