Skip to content

feat: discover Chromecast devices via mDNS#21

Merged
stupside merged 4 commits into
mainfrom
5-chromecast-discovery
Jul 19, 2026
Merged

feat: discover Chromecast devices via mDNS#21
stupside merged 4 commits into
mainfrom
5-chromecast-discovery

Conversation

@stupside

@stupside stupside commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Chromecasts announce over mDNS (_googlecast._tcp), not SSDP, so they never showed up in castor scan. This adds Chromecast discovery next to the existing DLNA scan, so cast devices appear and can be selected.

Combines #20 (@nerijus) and #19 (@fenio), both credited via Co-Authored-By. Supersedes #19 and #20.

Closes #5

nerijus and others added 4 commits July 19, 2026 22:34
Chromecasts announce over mDNS (_googlecast._tcp), not SSDP, so they never
appeared in scans. Browse for them in parallel with DLNA under the same
timeout, dedupe re-announcements, and preserve non-default cast-group ports
so grouped devices stay connectable.
Extract the entry->Info mapping out of discoverChromecast into a testable
chromecastInfo helper and cover it: IPv4/IPv6 selection, DeviceName->Name->Host
fallback, non-default cast-group ports, and rejection of address-less entries.
Fold the name and dedupe fallbacks into cmp.Or.

This branch combines the two parallel fixes for #5: the discovery
implementation from #20 and the test approach from #19.

Co-authored-by: Nerijus Baliūnas <591932+nerijus@users.noreply.github.com>
Co-authored-by: Bartosz Fenski <fenio@debian.org>
Move discoverDLNA out of device.go into dlna.go next to connectDLNA, so each
protocol's discovery and connection live in one file. Extract the entry->Info
mapping into a testable dlnaInfo helper, dedupe SSDP re-announcements by USN
(address fallback via cmp.Or), and add a table-driven test mirroring the
chromecast one. Both discovery paths now share an identical shape.
Replace the mutex and manual WaitGroup.Add/Done in Discover with WaitGroup.Go
(Go 1.25) writing two named results joined via slices.Concat, dropping the
lock and the collect closure. Add compile-time var _ Device assertions next to
dlnaDevice and chromecastDevice so each implementation is gated at build time.
@stupside
stupside merged commit e757f7a into main Jul 19, 2026
4 checks passed
@stupside
stupside deleted the 5-chromecast-discovery branch July 19, 2026 21:01
@stupside stupside self-assigned this Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Need help to support chromecast

2 participants