[ADD] Add PID option

This commit is contained in:
lda 2024-01-05 01:01:16 +01:00
parent 18ae52d001
commit d53b493754
Signed by: lda
GPG key ID: 6898757653ABE3E6
2 changed files with 25 additions and 0 deletions

View file

@ -75,6 +75,7 @@
"serverName": { "type": "string", "required": true },
"baseUrl": { "type": "string", "required": false },
"identityServer": { "type": "string", "required": false },
"pid": { "type": "string", "required": false },
"maxCache": { "type": "integer", "required": false },

View file

@ -104,6 +104,9 @@ Main(Array * args)
/* Program configuration */
Config *tConfig;
Stream *logFile;
Stream *pidFile = NULL;
char *pidPath = NULL;
/* User validation */
struct passwd *userInfo;
@ -335,6 +338,21 @@ start:
Free(token);
}
if (tConfig->pid)
{
pidFile = StreamOpen(tConfig->pid, "w+");
if (!pidFile)
{
char *msg = "Couldn't lock PID file at '%s'";
Log(LOG_ERR, msg, tConfig->pid);
exit = EXIT_FAILURE;
goto finish;
}
pidPath = StrDuplicate(tConfig->pid);
StreamPrintf(pidFile, "%ld", (long) getpid());
StreamClose(pidFile);
}
Log(LOG_DEBUG, "Configuration:");
LogConfigIndent(LogConfigGlobal());
Log(LOG_DEBUG, "Server Name: %s", tConfig->serverName);
@ -604,6 +622,12 @@ finish:
HttpRouterFree(matrixArgs.router);
Log(LOG_DEBUG, "Freed routing tree.");
if (pidPath)
{
remove(pidPath);
Free(pidPath);
}
/*
* Uninstall the memory hook because it uses the Log
* API, whose configuration is being freed now, so it