PACKAGE_VERSION and PACKAGE_STRING macros in the generated
include/config.h now only carry the base semantic version (e.g. 2.8.5
for a release, or 2.8.5.1 for any development iteration after it) rather
than the full Git-derived version (e.g. 2.8.5.1466.13), and the
PACKAGE and VERSION macros are no longer defined there, so that build
caches remain valid across commits. The ./configure --version output
also reports this shortened version. Code which needs the full version
should use NUT_VERSION_MACRO from the generated include/nut_version.h.
The @PACKAGE_VERSION@ and @VERSION@ values substituted into Makefiles,
*.pc files, packaging recipes and tarball names are not changed.
[PR #3754 follow-up]
UPS::Nut module now decodes NUT quoting and backslash escapes
in query/list values and nutauth.conf, including include paths. Remove
manual decoding of these returned values and pass literal credentials
to Authenticate(). Single quotes in configuration are now literal, as
in the C parser; replace single-quoted values with double-quoted values
where grouping was intended. The legacy Set() argument contract is
unchanged. [PR #3634]
nut-scanner now prefers the SONAME of each dynamically loaded library
(such as libusb-1.0.so.0) over the fully versioned file name it saw at
build time (such as libusb-1.0.so.0.6.0). Packagers no longer need to
rebuild NUT after an ABI-compatible update of libusb, Net-SNMP, neon,
Avahi, GLib or FreeIPMI which only changed that file name. The detected
values are reported by ./configure as SONAME_LIB* next to the
existing SOPATH_LIB* and SOFILE_LIB* values. [issue #3474]
#
characters inside double quotes. An unescaped # outside double quotes
still starts a comment. Existing \# escapes remain supported and are
still needed when sharing configuration files with older NUT versions.
Encoded protocol output continues to escape hashes for older peers;
default upsc text output is unchanged. [issues #607, #1306, PR #3633]
upsd.conf when upgrading: MAXAGE,
TRACKINGDELAY, MAXCONN and numeric CERTREQUEST values are now checked
in full and must fit their destination ranges. Values such as 15seconds
were previously read as 15; these and overflowing values are now logged
and ignored, retaining the previous setting. Valid decimal values, leading
zeroes and trailing whitespace remain accepted. [issue #676, PR #3631]
libnutclient: for Mozilla NSS setup, the way to
provide an expected CERTHOST address was missing. Now the API is fixed
in this regard, at the cost of adding arguments to methods introduced in
the previous release. [issue #3331, PR #3408]
MAXCONN setting in upsd.conf: now this value is checked against the
getrlimit() (e.g. ulimit -n) setting of the operating system for this
daemon, where available, and the upsd data server would refuse to start
if the requested value is larger than what is allowed (minus some reserve
for configuration files and other use-cases). [issue #3365]
upsmon and
upssched integration: the CMDSCRIPT and NOTIFYCMD definitions were
revised for the first token to mean an exact program name (possibly with
spaces in the value), not a shell scriptlet. Documentation in earlier NUT
releases implied that arguments could be passed here — this is no longer
true. If you need to pass special arguments to a notification program,
please use additional separately quoted tokens, or write a small helper
script to do so and specify its path here. The SHUTDOWNCMD is still a
scriptlet, as far as specifying command arguments is concerned, but it also
newly supports parsing multiple tokens as additional arguments. [PR #3499]
upsd data server: If SSL configuration was provided,
but the server failed to apply some aspect of that, it should now abort
with an explanation (and not proceed with insecure start-up like it could
do before). [issue #3331, PR #3435]
Enabled support for nutauth.conf files to provide credentials and/or
SSL settings in clients which previously only did best-effort attempts at
secure communications without an individual certificate, and only anonymously
for reading like upsc.
The new -A filename option defaults to trying to use a nutauth.conf file
(if NOT specified here, but rather found in one of the default locations)
but not failing if one is not usable; any specific values can require use
of such a file or to not even try reading one (none as the legacy default).
See the updated manual pages for more details. [issues #3329, #3411]
In a future NUT release, the default configure script handling for the
--with-ssl-client-validation=auto option may be changed from no to yes.
upsmon and upsstats.cgi clients capable of connections to multiple
NUT data servers, potentially in separately managed security realms, now
support an AUTHCONF option in their configuration files to specify the
SSL details to be used with each such server. Legacy upsmon configuration
keywords like CERTPATH, CERTFILE, CERTIDENT, CERTHOST, CERTVERIFY
and FORCESSL act as a "global defaults" section in nutauth.conf terms,
and any actual nutauth.conf file entries gets loaded on top of these data.
The default behavior (when AUTHCONF remains unspecified) is a best-effort
attempt to load the file from one of the standard locations. If your NUT
deployment defines an e.g. /etc/nut/nutauth.conf file which would be
loaded automatically, but its contents conflict with what upsmon needs
to know, please specify AUTHCONF = none in upsmon.conf. [issue #3439]
nut-driver-enumerator now preserves quotes and backslashes in normalized
configuration output and decodes values once using NUT token syntax.
Value queries omit trailing comments, take the first value token and
treat single quotes literally. This corrected parsing can change media
dependencies. Section checksums may change on upgrade and trigger the
usual reconciliation, including driver restarts; subsequent checks of
unchanged configuration remain stable. [PR #3635]
powervar_cx_usb, tripplite_usb drivers used a built-in limit on
reconnection attempts after which they exited (60 and 10 respectively).
This was revised to follow the new common setting reconnect_max_tries,
which defaults to trying indefinitely now. [#3541]
nutdrv_qx driver with cypress subdriver may be impacted
by a fix which added a special quirk, enabled by default for devices with
USB ID 0665:5161 (Belkin, Voltronic, VOLT Polska), to drain stale bytes
from USB buffers of the device before our driver sends queries, and use
a longer timeout. If this change breaks your device, please add
cypress_drain_quirk = 0 in your ups.conf and let us know.
[issue #2534, PR #3563]
With this quirk, a device which keeps sending data for longer than a reply
takes is now reset over USB and reconnected; after 3 such resets in a row
the driver exits ("Replies from the UPS stayed out of step with commands").
The quirk (and its default by USB ID) now also applies with an explicit
subdriver = cypress setting, which used to turn it off. [PR #3720]
huawei-ups2000 driver fixed two serious problems that affected all
previous NUT versions. All huawei-ups2000 users are strongly recommended
to upgrade to NUT 2.8.6, all previous versions are considered too unreliable
to use. Due to a Modbus compatibility problem, it was not possible to write
to any registers at all on some UPS models, meaning that changing any
variable or sending any instant command was impossible. Furthermore, due
to a broken instant command handler, some instant commands would always fail
with a reg1 is negative error (even with a compatible UPS), including
bypass.start, shutdown.return, shutdown.reboot, and
shutdown.reboot.graceful. [issue #3593, #3603, PR #3604].
generic_gpio_libgpiod driver was fixed to match its
name (previously the document base file name could have been generic_gpio).
This can impact packaging recipes. [PR #3693]