breadcast/breadcast-core/Cargo.toml
Breadway b5ea779c06 Fix scoped link-local clobbering and the in-flight start-death race
The daemon's is_link_local_v6 guard could not see scoped fe80::…%iface
hosts, so a later link-local mDNS resolution could clobber a good
routable IPv4 host and break the session until the next re-resolution.
Strip the %zone before parsing. Also invalidate a StartCast when the
session dies (or StopCast fires) between negotiation and StartFinished,
so the dead session is torn down instead of installed and the UI is not
left stuck on Casting; add daemon actor tests for both races.

Hardening: dedupe Cast/DLNA re-resolution forwards, tolerate a
TRANSITIONING DLNA renderer after Play, fall back to if-addrs for LAN-IP
enumeration when ip(8) is missing, harden the HTTP token fallback, and
null-guard the estimated-bandwidth FFI getter.
2026-08-30 19:07:47 +08:00

67 lines
1.6 KiB
TOML

[package]
name = "breadcast-core"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
description = "Shared, GTK-agnostic logic for breadcast: Chromecast + DLNA discovery/control, capture/encode/serve pipeline"
[dependencies]
anyhow = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tracing = { workspace = true }
tokio = { workspace = true }
mdns-sd = "0.20"
rust_cast = { version = "0.21", features = ["thread_safe"] }
ashpd = { version = "0.13", features = ["screencast"] }
gstreamer = "0.25"
gstreamer-app = "0.25"
gstreamer-video = "0.25"
tiny_http = "0.12"
rupnp = "3.0.0"
futures-util = "0.3.33"
# Fallback LAN-IP enumeration used only when the `ip` command is unavailable
# (net.rs) -- already a transitive dep via mdns-sd, so this adds no new crate
# to the build.
if-addrs = "0.15"
breadcast-caststream-sys = { path = "../breadcast-caststream-sys" }
[dev-dependencies]
tracing-subscriber = { workspace = true }
[[example]]
name = "discover"
path = "src/examples/discover.rs"
[[example]]
name = "cast_test"
path = "src/examples/cast_test.rs"
[[example]]
name = "capture_test"
path = "src/examples/capture_test.rs"
[[example]]
name = "video_test"
path = "src/examples/video_test.rs"
[[example]]
name = "mirror_test"
path = "src/examples/mirror_test.rs"
[[example]]
name = "apple_hls_test"
path = "src/examples/apple_hls_test.rs"
[[example]]
name = "dlna_discover"
path = "src/examples/dlna_discover.rs"
[[example]]
name = "dlna_mirror_test"
path = "src/examples/dlna_mirror_test.rs"
[[example]]
name = "cast_stream_test"
path = "src/examples/cast_stream_test.rs"