forked from Telodendria/Telodendria
Compare commits
2 commits
18ae52d001
...
a089224630
Author | SHA1 | Date | |
---|---|---|---|
a089224630 | |||
d53b493754 |
4 changed files with 31 additions and 0 deletions
|
@ -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 },
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ The following endpoints were added:
|
|||
|
||||
### Bug Fixes & General Improvements
|
||||
|
||||
- Use `j2s` for parsing the configuration
|
||||
- Fixed a double-free in `RouteUserProfile()` that would cause errors
|
||||
with certain Matrix clients. (#35)
|
||||
- Improved compatibility with NetBSD on various platforms.
|
||||
|
@ -43,6 +44,8 @@ parsing request bodies.
|
|||
|
||||
### New Features
|
||||
|
||||
- Implemented a `"pid"` option in the configuration, allowing Telodendria
|
||||
to write its process ID to a specified file.
|
||||
- Moved all administrator API endpoints to `/_telodendria/admin/v1`,
|
||||
because later revisions of the administrator API may break clients, so
|
||||
we want a way to give those breaking revisions new endpoints.
|
||||
|
|
|
@ -106,6 +106,9 @@ Here are the top-level directives:
|
|||
or you want to start over. **serverName** should be a DNS name that
|
||||
can be publicly resolved. This directive is required.
|
||||
|
||||
- **pid:** `String`
|
||||
Configure the file Telodendria writes its PID to.
|
||||
|
||||
- **baseUrl:** `String`
|
||||
|
||||
Set the server's base URL. **baseUrl** should be a valid URL,
|
||||
|
|
24
src/Main.c
24
src/Main.c
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue