Files
qbz/third-party/rupnp/QBZ-PATCH.md
T
vicrodh 3aed91fa0a fix(cast): localize UPnP URL compatibility and harden crash diagnostics
Keep http 1.5 and tolerate empty or relative service URLs in a local rupnp patch. Cover standard DLNA SOAP requests and malformed descriptions.

Avoid logger locks in fatal handlers, flush emitted log batches, and preserve CI symbols after smoke failures.

cx
2026-09-08 12:08:53 -06:00

1.6 KiB

QBZ UPnP endpoint compatibility

Source: crates.io rupnp 3.0.0 (MIT / Apache-2.0); upstream repository and commit are recorded in Cargo.toml and .cargo_vcs_info.json. All original files are retained. The only implementation change is in src/service.rs: parse_service_endpoint handles empty or missing-leading-slash service URLs. An annotation in device.rs also silences the upstream unused presentation_url field, whose warning is normally capped for registry dependencies.

Valid PathAndQuery values are returned by the original parser. The fallback restores empty-path tolerance and normalizes rejected relative URLs into root-relative request targets, reusing the current http parser so character and length checks still apply. In 1.4.0 a relative endpoint was actually sent without a leading slash; this patch deliberately uses valid origin-form instead. It does not change endpoints that were valid in 2.1.0. Device fetching, SSDP, SOAP, service selection and URLBase semantics are unchanged.

This replaces the workspace-wide http 1.4.0 pin from #745, retaining the subsequent HTTP validation and HeaderMap fixes. Fixtures are synthetic; KEF hardware confirmation remains required. Tests live in qbz-cast/tests: dlna_description_tolerance.rs and dlna_wire_compatibility.rs.

The workspace uses a local Cargo patch, never a network git dependency. This folder ships in the QBZ source archive; registry dependencies still come from the locked release vendor archive for offline AUR/Gentoo builds.

Remove this patch once an upstream release provides the same compatibility and passes those tests. This is not a general UPnP URL-resolution rewrite.