Skip to content

v2.15.1

Latest

Choose a tag to compare

@emasab emasab released this 09 Sep 17:12
· 1 commit to master since this release
c58bbed

librdkafka v2.15.1 is a maintenance release:

  • Update bundled OpenSSL and libcurl dependencies, and refresh the Windows
    build toolchain (msys2, vcpkg) (#5579).
  • Fix int_latency metric calculation, that was reporting bogus values when
    message.timeout.ms is set to 0 (infinite) (#5335).
  • IPv6 addresses are wrapped in square brackets following RFC 3986, allowing to connect to those compressed IPv6 addresses (#5544).
  • IPv6 addresses are correctly passed to OpenSSL as IPs not as hostnames with brackets and the certificate is validated against its iPAddress entries instead of against dNSName entries (#5544).

Upgrade considerations

  • If you're parsing the nodename as received by connect_cb, stats_cb, ssl_cert_verify_cb or throttle_cb, make sure you're correctly parsing it following RFC 3986. Metadata API calls are unaffected: they return the host and port as separate fields.
  • Make sure the brokers' certificates carry the IP in an iPAddress entry, not a dNSName entry. Previously the certificate was validated against dNSName (falling back to the subject CN) whenever the address could not be parsed as an IP literal: with OpenSSL < 3.0 or BoringSSL for any IP address, and on all OpenSSL versions for an IPv6 address configured in brackets in bootstrap.servers ([::1]:9092), which never verified. A scoped address (fe80::1%eth0) was likewise dNSName-matched on every version and now has the zone stripped before matching. IPv6 addresses ending in :: could not be connected to at all, as the nodename became host:::port and failed name resolution. In the remaining cases, a bare IPv4 or IPv6 literal on OpenSSL >= 3.0, the iPAddress entry was already used, and behaviour is unchanged.

Security considerations

Bundled dependencies were further upgraded as follows:
OpenSSL 3.5.6 → 3.5.7 for source/autoconf builds, and 3.6.2 → 3.6.3 for
vcpkg-based packages; libcurl 8.20.0 → 8.21.0, now used by both
source/autoconf builds and vcpkg (previously pinned to 8.19.0 in vcpkg,
so vcpkg-based packages also pick up the fixes below that source/autoconf
builds already got from 8.20.0).

Fixes

Producer fixes

  • Issues: #5555.
    Fix int_latency metric calculation. It was derived from the message
    timeout timestamp (now + message.timeout.ms - rkm_ts_timeout), which
    yields a large negative value when message.timeout.ms is 0 (infinite)
    and rkm_ts_timeout is INT64_MAX. It's now computed directly as
    now - rkm_ts_enq, the actual time the message spent in the queue,
    regardless of the timeout setting.
    Happening since 0.11.0 (#5335).

Checksums

Release asset checksums:

  • v2.15.1.zip SHA256 1ca308c10c4234962695fbf9c7f1ab0649ab43c7ad03d384f1645db7b74c92ce
  • v2.15.1.tar.gz SHA256 23c8575c7d1ced07246cb9cf200c11325b72201fd4134a02414ca869fbdd8ed3