]> git.lizzy.rs Git - plan9front.git/log
plan9front.git
6 years agoemulators ui: don't drink and code
qwx [Wed, 13 Jun 2018 12:14:25 +0000 (14:14 +0200)]
emulators ui: don't drink and code

6 years agoemulators ui: add option for fixed factor scaling and bound scale vertically
qwx [Wed, 13 Jun 2018 12:05:19 +0000 (14:05 +0200)]
emulators ui: add option for fixed factor scaling and bound scale vertically

6 years agostats: read cputemp as C, set scale max to 100 C
mischief [Wed, 13 Jun 2018 11:59:14 +0000 (11:59 +0000)]
stats: read cputemp as C, set scale max to 100 C

6 years agogames/gb: attempt at fixing sprite priority
aiju [Wed, 13 Jun 2018 09:52:41 +0000 (09:52 +0000)]
games/gb: attempt at fixing sprite priority

6 years agogames/gb: fix mbc5 register addressing (fixes warioland3 gamebreaking bug)
aiju [Wed, 13 Jun 2018 09:26:55 +0000 (09:26 +0000)]
games/gb: fix mbc5 register addressing (fixes warioland3 gamebreaking bug)

6 years agodevip: fix missing wunlock() for "ipifc not yet bound to device" case, don't create...
cinap_lenrek [Tue, 12 Jun 2018 18:31:39 +0000 (20:31 +0200)]
devip: fix missing wunlock() for "ipifc not yet bound to device" case, don't create multicast entry on error

6 years agoip/dhcp6d: don't drink and code
cinap_lenrek [Tue, 12 Jun 2018 17:50:04 +0000 (19:50 +0200)]
ip/dhcp6d: don't drink and code

6 years agoip/dhcp6d: only announce all-dhcp-servers multicast address on interface with link...
cinap_lenrek [Tue, 12 Jun 2018 17:36:31 +0000 (19:36 +0200)]
ip/dhcp6d: only announce all-dhcp-servers multicast address on interface with link-local address on it

6 years ago/sys/src/mkfile: add libttf
cinap_lenrek [Tue, 12 Jun 2018 17:29:38 +0000 (19:29 +0200)]
/sys/src/mkfile: add libttf

6 years agoupas/nedmail: marshal(1) options -n and -8 are mutually exclusive
Alex Musolino [Tue, 12 Jun 2018 10:34:16 +0000 (20:04 +0930)]
upas/nedmail: marshal(1) options -n and -8 are mutually exclusive

6 years agoip/dhcp6d: ignore short and from non-local source packets
cinap_lenrek [Mon, 11 Jun 2018 17:32:44 +0000 (19:32 +0200)]
ip/dhcp6d: ignore short and from non-local source packets

6 years agodevip: fix use after free in ipifcremmulti()
cinap_lenrek [Mon, 11 Jun 2018 01:19:42 +0000 (03:19 +0200)]
devip: fix use after free in ipifcremmulti()

closeconv() calls ipifcremmulti() like:

while((mp = cv->multi) != nil)
ipifcremmulti(cv, mp->ma, mp->ia);

so we have to defer freeing the entry after doing:

if((lifc = iplocalonifc(ifc, ia)) != nil)
remselfcache(f, ifc, lifc, ma);

which accesses the otherwise free'd ia and ma arguments.

6 years agodevip: do not icmp reply on multicast destination
cinap_lenrek [Mon, 11 Jun 2018 01:14:28 +0000 (03:14 +0200)]
devip: do not icmp reply on multicast destination

6 years agodhcp6d: make constants for message types, check server identifier in request, only...
cinap_lenrek [Sun, 10 Jun 2018 20:48:51 +0000 (22:48 +0200)]
dhcp6d: make constants for message types, check server identifier in request, only recheck ndb every minute

6 years agodhcp6d: add minimal stateless DHCPv6 server for network boot and DNS configuration
cinap_lenrek [Sun, 10 Jun 2018 20:08:57 +0000 (22:08 +0200)]
dhcp6d: add minimal stateless DHCPv6 server for network boot and DNS configuration

6 years agokernel: don't cap the minimum sleep time to TK2MS(1) for syssleep()
cinap_lenrek [Sun, 10 Jun 2018 17:47:21 +0000 (19:47 +0200)]
kernel: don't cap the minimum sleep time to TK2MS(1) for syssleep()

on HZ 100 systems like pc and pc64, the minium sleep time
was 10ms, which is quite high. the cap isnt really needed
as arch specific timerset() enforces its own limit, but on
a higher resolution.

background:

from Charles Forsyth:

I haven't really got an opinion on it. The 10ms interval was first used on
machines that were much slower.
I thought someone did set HZ to a bigger value, partly to support better
in-kernel timing. I haven't done it because I never had a need for it.
If I were doing (say) protocol implementation in user mode, I'd certainly
reconsider. Sleep itself forces at best ms granularity,
and for some applications that's too big.

initial mail from qwx raising the issue:

> Hello,
>
> I found out recently that sleep(2)'s resolution on 386 and 9front's amd64
> kernel is 10 ms rather than 1 ms.  The reason is that on those kernels,
> HZ is set to 100 rather than say 1000.  In syssleep, we get 1 tich every
> 10 ms.
>
> What is unclear is why.
>
> To paraphrase cinap_lenrek's answer to my question:
>
> In syssleep:
>                 if(ms < TK2MS(1))
>                         ms = TK2MS(1);
>                 tsleep(&up->sleep, return0, 0, ms);
>
> "TK2MS(1)" can be replaced with just "1", and the arch specific
> timerset() routine would do its own capping of the period if it's too
> small for the timer resolution, and make better decisions based on what
> the minimum timer period should be given the latency overhead of the
> given arch's interrupt handling and performance characteristics.
>
> Alternatively, HZ could be raised to 500 or 1000.
>
> It seems it's just trying to prevent excessive context switches and
> interrupts, but it seems somewhat arbitrary.  A ton of syscalls can be
> done in 1 ms, and it's the lowest we can go without changing the unit.
>
>
> What do you think?
>
> Thanks in advance,
>
> qwx

6 years agolibttf: add missing file impl.h
aiju [Sat, 9 Jun 2018 14:55:32 +0000 (14:55 +0000)]
libttf: add missing file impl.h

6 years agoadd ttfrender(1)
aiju [Sat, 9 Jun 2018 14:34:44 +0000 (14:34 +0000)]
add ttfrender(1)

6 years agoadd libttf
aiju [Sat, 9 Jun 2018 14:33:19 +0000 (14:33 +0000)]
add libttf

6 years agosnes: fix input botch 2
qwx [Sat, 9 Jun 2018 05:12:43 +0000 (07:12 +0200)]
snes: fix input botch 2

6 years agosnes: fix input botch
qwx [Sat, 9 Jun 2018 05:08:43 +0000 (07:08 +0200)]
snes: fix input botch

6 years agomklib: add %.acid target
mischief [Fri, 8 Jun 2018 16:48:31 +0000 (16:48 +0000)]
mklib: add %.acid target

6 years agoavl(2): add avlmin/avlmax in synopsis
mischief [Fri, 8 Jun 2018 16:37:39 +0000 (16:37 +0000)]
avl(2): add avlmin/avlmax in synopsis

6 years agogetuser(2): add source or sysname()
cinap_lenrek [Sun, 3 Jun 2018 21:46:47 +0000 (23:46 +0200)]
getuser(2): add source or sysname()

6 years agokernel: stop the practice of passing DMDIR to devir() perm argument
cinap_lenrek [Sun, 3 Jun 2018 21:33:35 +0000 (23:33 +0200)]
kernel: stop the practice of passing DMDIR to devir() perm argument

devdir internally replicates the qid in ther perm stat field
already and the practice of explicitely passing just causing
confusion when done inconsistently.

6 years agodevaoe: fix dotdot walk in devlinkdir, make perms consistent
cinap_lenrek [Sun, 3 Jun 2018 21:30:57 +0000 (23:30 +0200)]
devaoe: fix dotdot walk in devlinkdir, make perms consistent

6 years agodevenv: make #ec files not show up as world writable
cinap_lenrek [Sun, 3 Jun 2018 21:30:05 +0000 (23:30 +0200)]
devenv: make #ec files not show up as world writable

6 years agoip/dhcpd: parseip() error handling, make sure client ip is ipv4, add explicit length...
cinap_lenrek [Sun, 3 Jun 2018 18:52:10 +0000 (20:52 +0200)]
ip/dhcpd: parseip() error handling, make sure client ip is ipv4, add explicit length arguments to lookupname() and lookupserver()

6 years agoip/ipconfig: use ipmove() instead of memmove()
cinap_lenrek [Sun, 3 Jun 2018 18:31:48 +0000 (20:31 +0200)]
ip/ipconfig: use ipmove() instead of memmove()

6 years agofix incorrect character range in vga/unicode.font leading to missing CJK characters
aiju [Sat, 2 Jun 2018 07:49:37 +0000 (07:49 +0000)]
fix incorrect character range in vga/unicode.font leading to missing CJK characters

6 years agotcs: support EUC-JP JIS X 0212 codes
aiju [Sat, 2 Jun 2018 00:02:29 +0000 (00:02 +0000)]
tcs: support EUC-JP JIS X 0212 codes

6 years agomerge
cinap_lenrek [Fri, 1 Jun 2018 21:54:44 +0000 (23:54 +0200)]
merge

6 years agondb/cs: make ipv6 only host practical by checking ip version on local interfaces
cinap_lenrek [Fri, 1 Jun 2018 21:53:09 +0000 (23:53 +0200)]
ndb/cs: make ipv6 only host practical by checking ip version on local interfaces

avoid returning ip addresses that cannot be reached due
to lack of a compatible ip address. this means when here
is no ipv4 address configured, we wont return ipv4 addresses
and would not query dns for an A record.

likewise, when here is no ipv6 address configured then
we wont query dns for an AAAA record.

ipv6 lookups can still be disabled with the -4 flag just
as before.

6 years agodoom: don't set repl if scale is 1
qwx [Thu, 31 May 2018 03:11:33 +0000 (05:11 +0200)]
doom: don't set repl if scale is 1

6 years agosdram: properly support multiple ramdisks, so that ramdiskX corresponds to sdZX
cinap_lenrek [Tue, 29 May 2018 20:50:04 +0000 (22:50 +0200)]
sdram: properly support multiple ramdisks, so that ramdiskX corresponds to sdZX

6 years agoemulators ui: don't call flushmouse twice
qwx [Tue, 29 May 2018 03:28:31 +0000 (05:28 +0200)]
emulators ui: don't call flushmouse twice

6 years ago6c, 8c: Fix nocast cast bug which prevents address arithmetic from being computed...
spew [Mon, 28 May 2018 23:38:33 +0000 (19:38 -0400)]
6c, 8c: Fix nocast cast bug which prevents address arithmetic from being computed at compile time

6 years agomerge
cinap_lenrek [Sun, 27 May 2018 21:05:00 +0000 (23:05 +0200)]
merge

6 years ago9boot: detect SYSLINUX "memdisk" and pass to kernel via ramdisk0= parameter
cinap_lenrek [Sun, 27 May 2018 21:03:38 +0000 (23:03 +0200)]
9boot: detect SYSLINUX "memdisk" and pass to kernel via ramdisk0= parameter

this makes virtual "memdisk" from SYSLINUX accessible to
the kernel, allowing the iso to be loaded via TFTP and
started without any ethernet or disk drivers available.

6 years agosdram: experimental ramdisk driver
cinap_lenrek [Sun, 27 May 2018 20:59:19 +0000 (22:59 +0200)]
sdram: experimental ramdisk driver

this driver makes regions of physical memory accessible as a disk.

to use it, ramdiskinit() has to be called before confinit(), so
that conf.mem[] banks can be reserved. currently, only pc and pc64
kernel use it, but otherwise the implementation is portable.

ramdisks are not zeroed when allocated, so that the contents are
preserved across warm reboots.

to not waste memory, physical segments do not allocate Page structures
or populate the segment pte's anymore. theres also a new SG_CHACHED
attribute.

6 years agosshfs(4): language
aiju [Sun, 27 May 2018 11:22:23 +0000 (11:22 +0000)]
sshfs(4): language

6 years agosshfs(4): don't drink and troff
aiju [Sun, 27 May 2018 11:09:01 +0000 (11:09 +0000)]
sshfs(4): don't drink and troff

6 years agosshfs(4): replace the much maligned -r option
aiju [Sun, 27 May 2018 11:06:07 +0000 (11:06 +0000)]
sshfs(4): replace the much maligned -r option

6 years agoBfn improvements
aiju [Sat, 26 May 2018 17:17:41 +0000 (17:17 +0000)]
Bfn improvements

6 years agocc: fix result of operation not used warning for void casts
spew [Thu, 24 May 2018 23:31:55 +0000 (19:31 -0400)]
cc: fix result of operation not used warning for void casts

6 years agodc(1): add pi program as example
aiju [Thu, 24 May 2018 14:42:43 +0000 (15:42 +0100)]
dc(1): add pi program as example

6 years agomerge
aiju [Thu, 24 May 2018 12:41:08 +0000 (13:41 +0100)]
merge

6 years agoape: floating point improvements (thanks spew)
aiju [Thu, 24 May 2018 12:40:44 +0000 (13:40 +0100)]
ape: floating point improvements (thanks spew)

6 years agondb/dnsdebug: handle .ip6.arpa names
cinap_lenrek [Wed, 23 May 2018 17:44:12 +0000 (19:44 +0200)]
ndb/dnsdebug: handle .ip6.arpa names

6 years agondb/dnsquery: handle .ip6.arpa names, don't mount the dns service
cinap_lenrek [Wed, 23 May 2018 17:43:45 +0000 (19:43 +0200)]
ndb/dnsquery: handle .ip6.arpa names, don't mount the dns service

6 years agoip/tftpd: deal with block wrap arround
cinap_lenrek [Mon, 21 May 2018 23:53:15 +0000 (01:53 +0200)]
ip/tftpd: deal with block wrap arround

6 years agopc64: fix fpu bug
cinap_lenrek [Mon, 21 May 2018 17:23:54 +0000 (19:23 +0200)]
pc64: fix fpu bug

fpurestore() unconditionally changed fpstate to FPinactive when
the kernel used the FPU. but in the FPinit case, the registers are
not saved by mathemu(), resulting in all zero initialized registers
being loaded once userspace uses the FPU so the process would have
wrong MXCR value.

the index overflow check was wrong with using shifted value.

6 years agoape: fix auth.h
cinap_lenrek [Sun, 20 May 2018 21:22:41 +0000 (23:22 +0200)]
ape: fix auth.h

6 years agoauthsrv: implement AuthNTLM
cinap_lenrek [Sun, 20 May 2018 20:59:24 +0000 (22:59 +0200)]
authsrv: implement AuthNTLM

6 years agomerge
cinap_lenrek [Sun, 20 May 2018 20:50:50 +0000 (22:50 +0200)]
merge

6 years agoseparate MSCHAP(v2) and NTLM(v2) authentication
cinap_lenrek [Sun, 20 May 2018 20:49:24 +0000 (22:49 +0200)]
separate MSCHAP(v2) and NTLM(v2) authentication

due to linux omiting the final Z(4) in the NTLMv2 reply, and
the need for the windom for LMv2 authentication, here is a new
AuthNTLM ticket request now with length and dom fields.

6 years agocamv: fix leak on resize
qwx [Sun, 20 May 2018 14:47:41 +0000 (16:47 +0200)]
camv: fix leak on resize

6 years agofplot: draw axes; zoom more naturally; unzoom
aiju [Sun, 20 May 2018 09:14:16 +0000 (09:14 +0000)]
fplot: draw axes; zoom more naturally; unzoom

6 years agoip/cifsd: limit response data count in TRANS2 for remotebuffersize, avoid empty filen...
cinap_lenrek [Sun, 20 May 2018 01:48:33 +0000 (03:48 +0200)]
ip/cifsd: limit response data count in TRANS2 for remotebuffersize, avoid empty filename for the root

6 years agoauthsrv: work arround linux omiting final Z(4) after the AvrPairs
cinap_lenrek [Sat, 19 May 2018 23:37:38 +0000 (01:37 +0200)]
authsrv: work arround linux omiting final Z(4) after the AvrPairs

6 years agodontkill: explicitely set exit status to ''
cinap_lenrek [Sat, 19 May 2018 21:15:22 +0000 (23:15 +0200)]
dontkill: explicitely set exit status to ''

6 years agocifsd: fix ntlmv2 authentication
cinap_lenrek [Sat, 19 May 2018 14:40:01 +0000 (16:40 +0200)]
cifsd: fix ntlmv2 authentication

in ntlmv2, the client will retry the challenge response trying a bunch
of different domain names assuming the same server challenge. so we have
to make retries work with factotum and the auth server.

also, windows 7 with compatlevel=4 sends all zeros LM response.

6 years agomerge
spew [Sat, 19 May 2018 01:39:19 +0000 (21:39 -0400)]
merge

6 years agossh:add -r for extra raw mode
spew [Sat, 19 May 2018 01:36:33 +0000 (21:36 -0400)]
ssh:add -r for extra raw mode

6 years agomerge
cinap_lenrek [Wed, 16 May 2018 19:43:29 +0000 (21:43 +0200)]
merge

6 years agondb/cs: prevent deadlock with ndb/cs by mounting /srv/dns *AFTER* /net
cinap_lenrek [Wed, 16 May 2018 19:41:42 +0000 (21:41 +0200)]
ndb/cs: prevent deadlock with ndb/cs by mounting /srv/dns *AFTER* /net

the dnsquery() library function should not start mouting /srv/dns on
its own. this problem arrises only for ndb/cs as it is started before
ndb/dns.

the issue with mounting /srv/dns before /net is when ndb/cs attempts
to read the list of interfaces, accessing /net/ipifc, which triggers
a rpc to ndb/dns as it is ontop of the mount. this can yield a deadlock
when ndb/dns blocks its 9p loop waiting for requests to complete on
a refresh and the requests are stuck waiting for ndb/cs to translate
a dial string for announce().

6 years agosshfs: if we're going to annoy everyone we should at least match documentation
aiju [Tue, 15 May 2018 15:19:28 +0000 (16:19 +0100)]
sshfs: if we're going to annoy everyone we should at least match documentation

6 years ago9boot: DHCPv6 support for efi
cinap_lenrek [Tue, 15 May 2018 00:18:50 +0000 (02:18 +0200)]
9boot: DHCPv6 support for efi

6 years agoemulators ui: fix input botch and typo
qwx [Mon, 14 May 2018 18:49:08 +0000 (20:49 +0200)]
emulators ui: fix input botch and typo

6 years agomerge
cinap_lenrek [Mon, 14 May 2018 17:19:50 +0000 (19:19 +0200)]
merge

6 years agodevip: don't set mtu of interface to zero when not specified (thanks joe9)
cinap_lenrek [Mon, 14 May 2018 17:18:13 +0000 (19:18 +0200)]
devip: don't set mtu of interface to zero when not specified (thanks joe9)

change 9f74a951ae6a introduced a bug that set the mtu of a new
interface to 0 when not specified in the add ctl.

6 years agodrop your /lib/keyboard sir william, I cannot wait till lunchtime.
qwx [Mon, 14 May 2018 13:17:54 +0000 (15:17 +0200)]
drop your /lib/keyboard sir william, I cannot wait till lunchtime.

6 years agomerge
aiju [Mon, 14 May 2018 13:01:00 +0000 (14:01 +0100)]
merge

6 years agoMy /lib/keyboard explodes with delight!
aiju [Mon, 14 May 2018 12:51:09 +0000 (13:51 +0100)]
My /lib/keyboard explodes with delight!

6 years agoaudio/pcmconv: fix accidental cast to float instead of double
BurnZeZ [Sun, 13 May 2018 19:58:16 +0000 (19:58 +0000)]
audio/pcmconv: fix accidental cast to float instead of double

6 years agoape: add signed fixed size integer typedefs to u.h
qwx [Sun, 13 May 2018 05:13:00 +0000 (07:13 +0200)]
ape: add signed fixed size integer typedefs to u.h

6 years agodemote libemu to common code
qwx [Sun, 13 May 2018 05:01:47 +0000 (07:01 +0200)]
demote libemu to common code

- too small, nothing else that won't be under /games will use it
- "libemu" as a name doesn't make sense here

6 years agoadd port of aiju's port of games/2600
qwx [Sat, 12 May 2018 17:21:48 +0000 (19:21 +0200)]
add port of aiju's port of games/2600

6 years agoadd libemu
qwx [Sat, 12 May 2018 17:20:53 +0000 (19:20 +0200)]
add libemu

move redundant code from emulators to a common library

6 years agoadd signed fixed size integer typedefs
qwx [Sat, 12 May 2018 17:19:52 +0000 (19:19 +0200)]
add signed fixed size integer typedefs

6 years agondb/dns: lookup *all* entries in dblookup(), v4 and v6 queries in parallel, remove...
cinap_lenrek [Fri, 11 May 2018 20:37:28 +0000 (22:37 +0200)]
ndb/dns: lookup *all* entries in dblookup(), v4 and v6 queries in parallel, remove weigthed timeouts

dblookup() used to only return the first matching entry. in
case of ipv6, we want all entries returned to get both v4
and v6 addresses... and these might not neccesarily be in
the same entry (see /lib/ndb/common). note also this makes
it behave the same as in cachedb mode which reads in the
whole database.

we do not know if v4 or v6 routing works, so the simplest
is just to query v4 and v6 nameservers in parallel. this is
done by changing serveraddrs() to return one address type,
and we make sure to get at least one v4 and one v6 address
each round.

get rid of the weigthed timeout code... there where too many
assumptions. instead, we give a round 500ms timeout (or 1 second
in patient mode) and honor the maximum query time.

6 years agomerge
cinap_lenrek [Fri, 11 May 2018 14:16:37 +0000 (16:16 +0200)]
merge

6 years agofix manpage cross references
cinap_lenrek [Fri, 11 May 2018 14:15:08 +0000 (16:15 +0200)]
fix manpage cross references

6 years agolibplumb: fix plumbunpackpartial()
cinap_lenrek [Thu, 10 May 2018 17:46:38 +0000 (19:46 +0200)]
libplumb: fix plumbunpackpartial()

- *morep was not set in error cases
- attr and ntext could be leaked

6 years agomerge
cinap_lenrek [Thu, 10 May 2018 17:38:01 +0000 (19:38 +0200)]
merge

6 years agoppp: set source specific default route regardless of primary flag, set link speed...
cinap_lenrek [Thu, 10 May 2018 17:36:14 +0000 (19:36 +0200)]
ppp: set source specific default route regardless of primary flag, set link speed thru new ctl message when -b is specified

6 years agoip: add some primitive rate limiting knobs to counteract bufferbloat
cinap_lenrek [Thu, 10 May 2018 17:31:58 +0000 (19:31 +0200)]
ip: add some primitive rate limiting knobs to counteract bufferbloat

6 years agoadd usb tablet support
aiju [Tue, 8 May 2018 08:28:48 +0000 (08:28 +0000)]
add usb tablet support

6 years agolibmp: add awk-generated tests
aiju [Sat, 5 May 2018 12:14:39 +0000 (12:14 +0000)]
libmp: add awk-generated tests

6 years agompdiv: get signs right...
aiju [Sat, 5 May 2018 12:03:45 +0000 (12:03 +0000)]
mpdiv: get signs right...

6 years agomp: more tests
aiju [Sat, 5 May 2018 08:49:38 +0000 (08:49 +0000)]
mp: more tests

6 years agompmagadd: oops...
aiju [Fri, 4 May 2018 21:42:08 +0000 (21:42 +0000)]
mpmagadd: oops...

6 years agompmagadd: force output sign +1 always
aiju [Fri, 4 May 2018 21:41:16 +0000 (21:41 +0000)]
mpmagadd: force output sign +1 always

6 years agompdiv: fix sign bug
aiju [Fri, 4 May 2018 21:18:46 +0000 (21:18 +0000)]
mpdiv: fix sign bug

6 years agopc: add $ operator
aiju [Fri, 4 May 2018 10:07:39 +0000 (11:07 +0100)]
pc: add $ operator

6 years agolibmp: add new tests
aiju [Fri, 4 May 2018 00:42:59 +0000 (00:42 +0000)]
libmp: add new tests

6 years agomplogic: don't drop carry out
aiju [Thu, 3 May 2018 23:31:24 +0000 (23:31 +0000)]
mplogic: don't drop carry out

6 years agopc(1): always allocate at least one mpdigit (itomp assumes this)
aiju [Thu, 3 May 2018 13:06:15 +0000 (14:06 +0100)]
pc(1): always allocate at least one mpdigit (itomp assumes this)

6 years agomerge
cinap_lenrek [Thu, 3 May 2018 10:28:41 +0000 (12:28 +0200)]
merge

6 years agolibplumb: fix old leak introduced in 18b8ed1a5ea3
mischief [Thu, 3 May 2018 08:26:09 +0000 (01:26 -0700)]
libplumb: fix old leak introduced in 18b8ed1a5ea3