From 3dc5926243c2f26820d781c8dac8be9a707bb562 Mon Sep 17 00:00:00 2001 From: Oleh Kuzhylnyi Date: Sun, 24 Mar 2024 13:05:40 -0300 Subject: [PATCH] Add version-based visibility of shairport-sync endpoints This patch introduces modification to AirPlay attributes allowing AirPlay clients seeing only appropriate Endpoints of specific version of AirPlay protocol. [Test] Run two instances of shairport-sync - built for version 1 and for version 2. TuneBlade recognizes only AirPlay version 1 instance running. MacOS/iOS recognizes only AirPlay version 2 instance running. Without that patch, both MacOS/iOS detect two endpoints at the same time. The TuneBlade detects only AirPlay version 1 since it doesn't support AirPlay version 2. --- mdns.h | 6 +++--- rtsp.c | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/mdns.h b/mdns.h index f69179ef..e81fda48 100644 --- a/mdns.h +++ b/mdns.h @@ -33,12 +33,12 @@ typedef struct { /* #define MDNS_RECORD_WITH_METADATA \ - "tp=UDP", "sm=false", "ek=1", "et=0,1", "cn=0,1", "ch=2", METADATA_EXPRESSION, "ss=16", \ + "tp=UDP", "sm=false", "ek=1", "et=0,1", "ch=2", METADATA_EXPRESSION, "ss=16", \ "sr=44100", "vn=3", "txtvers=1", config.password ? "pw=true" : "pw=false" */ #define MDNS_RECORD_WITH_METADATA \ "sf=0x4", "fv=76400.10", "am=ShairportSync", "vs=105.1", "tp=TCP,UDP", "vn=65537", \ - METADATA_EXPRESSION, "ss=16", "sr=44100", "da=true", "sv=false", "et=0,1", "ek=1", "cn=0,1", \ + METADATA_EXPRESSION, "ss=16", "sr=44100", "da=true", "sv=false", "et=0,1", "ek=1", \ "ch=2", "txtvers=1", config.password ? "pw=true" : "pw=false" #endif @@ -52,7 +52,7 @@ typedef struct { #define MDNS_RECORD_WITHOUT_METADATA \ "sf=0x4", "fv=76400.10", "am=ShairportSync", "vs=105.1", "tp=TCP,UDP", "vn=65537", "ss=16", \ - "sr=44100", "da=true", "sv=false", "et=0,1", "ek=1", "cn=0,1", "ch=2", "txtvers=1", \ + "sr=44100", "da=true", "sv=false", "et=0,1", "ek=1", "ch=2", "txtvers=1", \ config.password ? "pw=true" : "pw=false" #endif // _MDNS_H diff --git a/rtsp.c b/rtsp.c index 26883471..e22edb8f 100644 --- a/rtsp.c +++ b/rtsp.c @@ -272,7 +272,6 @@ void build_bonjour_strings(__attribute((unused)) rtsp_conn_info *conn) { pkString_make(pkString + strlen("pk="), sizeof(pkString) - strlen("pk="), config.airplay_device_id); - txt_records[entry_number++] = "cn=0,1"; txt_records[entry_number++] = "da=true"; txt_records[entry_number++] = "et=0,1"; txt_records[entry_number++] = ap1_featuresString; @@ -311,7 +310,6 @@ void build_bonjour_strings(__attribute((unused)) rtsp_conn_info *conn) { txt_records[entry_number++] = "sv=false"; txt_records[entry_number++] = "et=0,1"; txt_records[entry_number++] = "ek=1"; - txt_records[entry_number++] = "cn=0,1"; txt_records[entry_number++] = "ch=2"; txt_records[entry_number++] = "txtvers=1"; if (config.password == 0) -- 2.47.2