aboutsummaryrefslogtreecommitdiff
path: root/net/mpd5
diff options
context:
space:
mode:
authorEugene Grosbein <eugen@FreeBSD.org>2017-06-27 16:51:55 +0000
committerEugene Grosbein <eugen@FreeBSD.org>2017-06-27 16:51:55 +0000
commit556d63283480294b6fca1c52b9df59ad719a8b8d (patch)
tree148ad9499247ad15056af6f1d5b00c2e7e253036 /net/mpd5
parentfa5408049298da7f51a517f57954ebe7cd239164 (diff)
downloadports-556d63283480294b6fca1c52b9df59ad719a8b8d.tar.gz
ports-556d63283480294b6fca1c52b9df59ad719a8b8d.zip
Notes
Diffstat (limited to 'net/mpd5')
-rw-r--r--net/mpd5/Makefile9
-rw-r--r--net/mpd5/files/patch-console.c76
2 files changed, 81 insertions, 4 deletions
diff --git a/net/mpd5/Makefile b/net/mpd5/Makefile
index f48316eed100..85879b4e2130 100644
--- a/net/mpd5/Makefile
+++ b/net/mpd5/Makefile
@@ -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
@@ -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)
diff --git a/net/mpd5/files/patch-console.c b/net/mpd5/files/patch-console.c
new file mode 100644
index 000000000000..85c51e999cad
--- /dev/null
+++ b/net/mpd5/files/patch-console.c
@@ -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);