release 3.1-beta0
fix bugs in release script
I meant that
git is whiny about ~s in versions
release 3.1~beta0
release should push the release tags as well
Provide a pkg-config file for zephyr

Previously, it was difficult to detect the presence of the zephyr
library in autoconf, and required custom macros.  However, the world
has since developed pkg-config, which is a simple tool for detecting
the presence of a package, its compile-time flags, and its link-time
flags, even in the presence of recursive dependencies.  This adds
"zephyr.pc" as a file generated by the build process, and installs it
into the appropriate directory, allowing the target system to use

PKG_CHECK_MODULES([ZEPHYR], [zephyr])
AC_SUBST([ZEPHYR_CFLAGS])
AC_SUBST([ZEPHYR_LIBS])

to detect all necessary information to incorporate the zephyr library.
package the pkgconfig file
ZSendNotice: Don't leak buffer in error case

I would hope this codepath can never trigger, but good to clean up properly
here.
Mark cksum_map as const

May as well put it in .rodata
Don't pass HMACKs through reassembly code

ACKs to fragmented notices keep the multiuid field, but multipart becomes "".
This is interpreted as 0/z_message_length. This means ACKs to non-initial
fragments look like an initial fragment from the multipart field, but not when
checking uid == multiuid. The result is that they get smashed when passing
through reassembly.

6e8ec12b0ba9d476e065957028e4cf9cf69d6ac2 addressed this. For SERVACKs and
SERVNAKs, it drops all but the initial ones (uid == multipart) on the floor. It
ignores the problem for HMACKs. Normally ZSendPacket blocks on the HMACK before
sending each successive fragment, so there's no opportunity for them to
collide. But if calling ZSrvSendNotice with a custom send_function that doesn't
block, the HMACKs can smash into each other depending on timing.

Instead, fix it by using z_uid instead of z_multiuid as the multiuid key. For
compatibility, keep the SERVACK dropping behavior. (I'd like to get all the
SERVACKs too, but potentially that'll confuse clients somewhat.)
Remove unauthenticated support from subs code

It's only used by ZCancelSubscription, but the server rejects unauthenticated
CLIENT_CANCELSUB requests anyway. The unauthenticated codepath results in a
SERVNAK and doesn't drop subs.
Expose Z_Subscriptions as ZSubscriptions

With a custom send_routine that mirrors ZSrvSendList. This allows for an
asynchronous version that replaces send_routine with non-blocking versions (and
waits for ACKs out-of-band).
Free the result of krb5_unparse_name in ZGetSender

Minor memory leak, but we may as well fix it.
Call krb5_unparse_name in server/kstuff.c

Looks like it's the same as free right now, but may as well call the right one.
Add a bunch of files to .gitignore
Add fudge factor in subscription sharding

Header lengths are not constant-size because Zcode escapes bytes 0xFF and 0x00
into two bytes. If we end up filling up close to all the space we have and
Z_SendFragmentedNotice then computes a header length larger than ours by
enough, the message gets fragmented.

Getting it fragmented is especially unfortunate because only the first of a
fragmented notice ever has a SERVACK survive. (They all get SERVACKs, but
libzephyr kindly drops all but the first on the floor.)

This isn't a watertight fix; we may get really really unlucky and blow up 13
bytes in the authenticator and checksum. But that's not likely, and a proper
fix would involve either computing based on the maximum possible authenticator
size (wasteful and hard to bound tightly) or changing to protocol to use a less
inappropriate encoding.
Defensively avoid waiting on non-initial SERVACKs

Although the previous commit should make it very unlikely we screw up the
subscription sharding, be defensive about waiting for SERVACKs. ZSubscribeTo
does mess up, Z_SendFragmentedNotice will shard with a z_multiuid. In that
case, although the second packet will get a SERVACK, Z_ReadWait kindly drops it
on the floor. The ZIfNotice will then just hang.

Tested by bumping zwgc's BATCH_SIZE up to 200, reverting the previous commit,
and strace.
autoconf check for krb5_free_unparsed_name
release 3.1~beta1