-
Notifications
You must be signed in to change notification settings - Fork 761
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Add new patch from upstream to improve stability of the daemon;
- simplify PORTDOCS and avoid usage of != in port's Makefile; - add LICENSE; - take maintainership; - bump PORTREVISION.
- Loading branch information
eugen
authored and
eugen
committed
Jun 27, 2017
1 parent
3fc7a1c
commit 4156f1e
Showing
2 changed files
with
81 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| --- src/console.h.orig 2016-01-06 22:42:06.000000000 +0700 | ||
| +++ src/console.h 2017-06-16 21:12:59.268715000 +0700 | ||
| @@ -119,6 +119,7 @@ | ||
| extern int ConsoleStat(Context ctx, int ac, char *av[], void *arg); | ||
| extern Context StdConsoleConnect(Console c); | ||
| extern void ConsoleShutdown(Console c); | ||
| + extern void ConsoleCancelCleanup(void *rwlock); | ||
|
|
||
| extern int UserCommand(Context ctx, int ac, char *av[], void *arg); | ||
| extern int UserStat(Context ctx, int ac, char *av[], void *arg); | ||
| --- src/console.c.orig 2016-01-06 22:42:06.000000000 +0700 | ||
| +++ src/console.c 2017-06-16 21:54:48.919442000 +0700 | ||
| @@ -175,6 +175,14 @@ ConsoleClose(Console c) | ||
| return 0; | ||
| } | ||
|
|
||
| +void | ||
| +ConsoleCancelCleanup(void *rwlock) | ||
| +{ | ||
| + pthread_rwlock_t p = (pthread_rwlock_t)rwlock; | ||
| + | ||
| + RWLOCK_UNLOCK(p); | ||
| +} | ||
| + | ||
| /* | ||
| * ConsoleStat() | ||
| */ | ||
| @@ -192,13 +200,14 @@ ConsoleStat(Context ctx, int ac, char *a | ||
| Printf("\tIP-Address : %s\r\n", u_addrtoa(&c->addr,addrstr,sizeof(addrstr))); | ||
| Printf("\tPort : %d\r\n", c->port); | ||
|
|
||
| + pthread_cleanup_push(ConsoleCancelCleanup, c->lock); | ||
| RWLOCK_RDLOCK(c->lock); | ||
| Printf("Active sessions:\r\n"); | ||
| SLIST_FOREACH(s, &c->sessions, next) { | ||
| Printf("\tUsername: %s\tFrom: %s\r\n", | ||
| s->user.username, u_addrtoa(&s->peer_addr,addrstr,sizeof(addrstr))); | ||
| } | ||
| - RWLOCK_UNLOCK(c->lock); | ||
| + pthread_cleanup_pop(1); | ||
|
|
||
| Printf("Global options:\r\n"); | ||
| OptStat(ctx, &c->options, gConfList); | ||
| @@ -905,13 +914,14 @@ UserStat(Context ctx, int ac, char *av[] | ||
| ConsoleUser u; | ||
|
|
||
| Printf("Configured users:\r\n"); | ||
| + pthread_cleanup_push(ConsoleCancelCleanup, gUsersLock); | ||
| RWLOCK_RDLOCK(gUsersLock); | ||
| ghash_walk_init(gUsers, &walk); | ||
| while ((u = ghash_walk_next(gUsers, &walk)) != NULL) { | ||
| Printf("\tUsername: %-15s Priv: %s\r\n", u->username, | ||
| ((u->priv == 2)?"admin":((u->priv == 1)?"operator":"user"))); | ||
| } | ||
| - RWLOCK_UNLOCK(gUsersLock); | ||
| + pthread_cleanup_pop(1); | ||
|
|
||
| return 0; | ||
| } | ||
| --- src/log.c.orig 2016-01-06 22:42:06.000000000 +0700 | ||
| +++ src/log.c 2017-06-16 21:16:19.643625000 +0700 | ||
| @@ -256,12 +256,13 @@ vLogPrintf(const char *fmt, va_list args | ||
| #ifdef SYSLOG_FACILITY | ||
| syslog(LOG_INFO, "%s", buf); | ||
| #endif | ||
| + pthread_cleanup_push(ConsoleCancelCleanup, gConsole.lock); | ||
| RWLOCK_RDLOCK(gConsole.lock); | ||
| SLIST_FOREACH(s, &gConsole.sessions, next) { | ||
| if (Enabled(&s->options, CONSOLE_LOGGING)) | ||
| s->write(s, "%s\r\n", buf); | ||
| } | ||
| - RWLOCK_UNLOCK(gConsole.lock); | ||
| + pthread_cleanup_pop(1); | ||
| #ifdef SYSLOG_FACILITY | ||
| } else { | ||
| vsyslog(LOG_INFO, fmt, args); |