Make the change to short DACP polling (semi-)permanent. Maye look at this again in the future.

This commit is contained in:
Mike Brady
2023-07-04 19:28:05 +01:00
parent c2abee35d0
commit 6acd73da57
+7 -14
View File
@@ -412,19 +412,12 @@ void set_dacp_server_information(rtsp_conn_info *conn) {
dacp_server.ip_string, dacp_server.dacp_id);
/*
// If the client is forked-daapd, then we always use revision number 1
// because otherwise the return read will hang in a "long poll" if there
// are no changes.
// This is different to other AirPlay clients
// which return immediately with a 403 code if there are no changes.
dacp_server.always_use_revision_number_1 = 0;
if (conn->UserAgent != NULL) {
char *p = strstr(conn->UserAgent, "forked-daapd");
if ((p != 0) &&
(p == conn->UserAgent)) { // must exist and be at the start of the UserAgent string
dacp_server.always_use_revision_number_1 = 1;
}
}
"long polling" is not implemented by Shairport Sync, whereby by sending the client the
last-received revision number, the link will hang until a change occurs.
Instead, at present, Shairport Sync always uses a revision number of 1.
*/
// always use revision number 1
@@ -658,7 +651,7 @@ void *dacp_monitor_thread_code(__attribute__((unused)) void *na) {
char *response = NULL;
int32_t item_size;
char command[1024] = "";
if (always_use_revision_number_1 != 0) // for forked-daapd
if (always_use_revision_number_1 != 0) // see the "long polling" note above
revision_number = 1;
snprintf(command, sizeof(command) - 1, "playstatusupdate?revision-number=%d",
revision_number);