librtmp2 (0.4.2-1) UNRELEASED; urgency=medium
* Bound Client::publish()/play() AMF exchanges with the configured
connect timeout, closing a stall window where a malicious server could
hold the caller for minutes after connect succeeded.
* Reject AMF route strings (connect app, publish/play stream names) that
are not valid UTF-8 or contain embedded NUL bytes, preventing distinct
wire-level names from colliding onto the same relay route.
* Reject empty connect app / publish/play stream names, and gate
onMetaData/script relay on on_media_cb being registered.
* Track bytes_received as u64 so WindowAckSize pacing stays correct past
4 GiB; pass Aggregate sub-tag slices directly in the client play path
instead of cloning.
-- OpenRTMP <info@openrtmp.org> Tue, 21 Jul 2026 00:00:00 +0000
librtmp2 (0.4.1-1) UNRELEASED; urgency=medium
* Track the exact publish-route key claimed per connection and release
that same key from the route registry on FCUnpublish/closeStream/play
takeover, fixing stale route ownership. Also evict stream_cache entries
for both the claimed key and the current relay route key (if pinned to
a different value afterward), fixing stale cache replay.
* publish() now clears Stream.is_playing, matching play()'s existing
is_publishing clear, so a play->publish switch on the same connection
is observable by hosts polling stream role flags.
* Enforce a single wall-clock deadline across DNS resolution, TCP/TLS
connect, the RTMP handshake, and the AMF connect/createStream exchange
in Client::connect() (configurable via Client::set_connect_timeout()).
* Cap chained ModEx extension unwrapping at 32 layers to prevent CPU
amplification from deeply nested wrappers on media frames.
-- OpenRTMP <info@openrtmp.org> Sat, 18 Jul 2026 00:00:00 +0000
librtmp2 (0.4.0-1) UNRELEASED; urgency=medium
* Server-side E-RTMP v2 connect negotiation (fourCcList, capsEx bitmask,
videoFourCcInfoMap, reconnect) with capability-aware multitrack relay,
per-track callbacks, and init-cache replay for late-joining players.
* Enhanced init-frame classification for HEVC, AV1, Opus, AAC, and
CodedFramesX keyframes; onMetaData caching and timestamp-preserving relay.
* Client AMF0/AMF3 metadata and Aggregate receive callbacks, populated
codec/track fields, and legacy pause/seek/receiveAudio/receiveVideo/
closeStream command handling on the server session path.
* Correct E-RTMP packet-type constants and per-codec capability masks;
bound capability blobs, Aggregate sub-tags, and multitrack cache storage.
-- OpenRTMP <info@openrtmp.org> Wed, 15 Jul 2026 00:00:00 +0000
librtmp2 (0.3.1-1) UNRELEASED; urgency=medium
* Harden DNS resolution, RTMP ping keepalive, and publishing send-path
flush behavior on the client and server.
* Close stale pre-connect sessions and cap the shared DNS resolver queue
to prevent connection-slot exhaustion and unbounded resolver threads.
-- OpenRTMP <info@openrtmp.org> Sun, 13 Jul 2026 00:00:00 +0000
librtmp2 (0.3.0-1) UNRELEASED; urgency=medium
* Initial Debian packaging for PPA publishing.
* Lower the rustc Build-Depends floor to 1.93, matching the crate's
actual MSRV (rust-version in Cargo.toml) instead of whatever
toolchain happened to be installed in CI.
* Client TLS verification now honors ServerConfig.tls_ca_file and
tls_insecure via Transport::connect_tls()'s new ca_file/insecure
parameters, which were previously silently ignored.
-- OpenRTMP <info@openrtmp.org> Sun, 12 Jul 2026 00:00:00 +0000
librtmp2 (0.2.1-1) UNRELEASED; urgency=medium
* lrtmp2_tls_supported() runtime capability check exported to FFI.
* Parse onMetaData from RTMP data messages into Conn fields (duration,
width, height, framerate, videodatarate, audiodatarate, codec info).
* Fix flv audio/video/script tag parsers not resetting the
caller-owned tag struct at the start of every parse() call.
* Fix CodeQL invalid-pointer alert in the FFI server_create test and
borrow-checker errors in AMF0 skip_value_depth.
* Security: cap and copy FFI frame payloads before sending; add
per-poll and per-command-wait recv byte budgets to the RTMP client;
substitute a safe default max_connections for a zero-initialized
ServerConfig instead of disabling connection limiting.
-- OpenRTMP <info@openrtmp.org> Fri, 10 Jul 2026 00:00:00 +0000
librtmp2 (0.2.0-1) UNRELEASED; urgency=medium
* RTMP Aggregate message (0x16) handling: aggregate-framed audio/video
is now unpacked and relayed through the normal media-frame path.
* Client::connect() now actually supports rtmps:// via the new
Transport::connect_tls(); parse_rtmp_url() recognizes the scheme
and defaults to port 443.
* Various client/server transport correctness fixes: recv budget
accounting no longer drops already-read bytes, poll(2) retries on
EINTR, bounded TLS handshake timeout, blocking read helpers poll
for write-readiness during TLS renegotiation, RTMPS pre-checks TLS
support before dialing.
* Security: cap and copy FFI frame payloads before sending; add
per-poll and per-command-wait recv byte budgets to the RTMP client;
substitute a safe default max_connections for a zero-initialized
ServerConfig instead of disabling connection limiting.
-- OpenRTMP <info@openrtmp.org> Fri, 10 Jul 2026 00:00:00 +0000
librtmp2 (0.1.1-1) UNRELEASED; urgency=medium
* Cap per-connection recv drain in process_connections() to 256 KiB
per poll pass, preventing a peer from starving other sessions in
the single-threaded poll loop.
* Update docs.rs badge to track the latest published version.
-- OpenRTMP <info@openrtmp.org> Wed, 08 Jul 2026 00:00:00 +0000
librtmp2 (0.1.0-1) UNRELEASED; urgency=medium
* First tagged pre-release: TLS/RTMPS support (OpenSSL, optional via
the "tls" Cargo feature), legacy RTMP and Enhanced RTMP v1/v2
protocol support, full server/client APIs with callbacks, frame API
for audio/video/script/metadata, H.264/H.265/AV1 and legacy video,
AAC/Opus/MP3/G.711 audio, bounds-checked parsers, constant-time
handshake RNG, and ABI baseline tooling.
-- OpenRTMP <info@openrtmp.org> Wed, 08 Jul 2026 00:00:00 +0000