Skip to content

Commit

Permalink
- Add new patch from upstream to improve stability of the daemon;
Browse files Browse the repository at this point in the history
- 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
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 4 deletions.
9 changes: 5 additions & 4 deletions net/mpd5/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@

PORTNAME= mpd
DISTVERSION= 5.8
PORTREVISION= 1
CATEGORIES= net
MASTER_SITES= SF/${PORTNAME}/Mpd5/Mpd-${PORTVERSION}
PKGNAMESUFFIX= 5
DIST_SUBDIR= mpd5

MAINTAINER= mav@FreeBSD.org
MAINTAINER= eugen@FreeBSD.org
COMMENT= Multi-link PPP daemon based on netgraph(4)

LICENSE= BSD

OPTIONS_DEFINE= NG_IPACCT
NG_IPACCT_DESC= Use ng_ipacct kernel module from port

Expand All @@ -31,11 +34,9 @@ RUN_DEPENDS+= /boot/modules/ng_ipacct.ko:net-mgmt/ng_ipacct
.endif

USE_RC_SUBR= mpd5
HTMLNUM!= jot 70 1
CONFSUF= conf secret script
DOCSDIR= ${PREFIX}/share/doc/mpd5
PORTDOCS= ${HTMLNUM:S/^/mpd/:S/$/.html/} mpd.html mpd.ps README \
mpd_toc.html
PORTDOCS= README mpd*
PLIST_FILES= ${CONFSUF:S/^/etc\/mpd5\/mpd./:S/$/.sample/} sbin/mpd5

.if !defined(WITHOUT_MAN)
Expand Down
76 changes: 76 additions & 0 deletions net/mpd5/files/patch-console.c
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);

0 comments on commit 4156f1e

Please sign in to comment.