[airplay] Fix client name showing as blank when pairing with MacOS

Also include the X-Apple-HKP header in pair-pin-start like iOS does, just in
case.

Ref issue #1885
This commit is contained in:
ejurgensen 2025-05-17 01:19:27 +02:00
parent 7193d0a243
commit b88df4b4e8
2 changed files with 14 additions and 0 deletions

View File

@ -861,6 +861,7 @@ request_headers_add(struct evrtsp_request *req, struct airplay_session *rs, enum
{ {
char buf[64]; char buf[64];
const char *user_agent; const char *user_agent;
const char *client_name;
const char *method; const char *method;
const char *url; const char *url;
int ret; int ret;
@ -873,6 +874,9 @@ request_headers_add(struct evrtsp_request *req, struct airplay_session *rs, enum
user_agent = cfg_getstr(cfg_getsec(cfg, "general"), "user_agent"); user_agent = cfg_getstr(cfg_getsec(cfg, "general"), "user_agent");
evrtsp_add_header(req->output_headers, "User-Agent", user_agent); evrtsp_add_header(req->output_headers, "User-Agent", user_agent);
client_name = cfg_getstr(cfg_getsec(cfg, "library"), "name");
evrtsp_add_header(req->output_headers, "X-Apple-Client-Name", client_name);
// If we have a realm + nonce it means that the device told us in the reply to // If we have a realm + nonce it means that the device told us in the reply to
// SETUP that www authentication with password is required // SETUP that www authentication with password is required
if (rs->realm && rs->nonce) if (rs->realm && rs->nonce)
@ -2640,6 +2644,12 @@ static int
payload_make_pin_start(struct evrtsp_request *req, struct airplay_session *rs, void *arg) payload_make_pin_start(struct evrtsp_request *req, struct airplay_session *rs, void *arg)
{ {
DPRINTF(E_LOG, L_AIRPLAY, "Starting device pairing for '%s', go to the web interface and enter PIN\n", rs->devname); DPRINTF(E_LOG, L_AIRPLAY, "Starting device pairing for '%s', go to the web interface and enter PIN\n", rs->devname);
if (rs->pair_type == PAIR_CLIENT_HOMEKIT_NORMAL)
evrtsp_add_header(req->output_headers, "X-Apple-HKP", "3");
else if (rs->pair_type == PAIR_CLIENT_HOMEKIT_TRANSIENT)
evrtsp_add_header(req->output_headers, "X-Apple-HKP", "4");
return 0; return 0;
} }

View File

@ -1109,6 +1109,7 @@ raop_add_headers(struct raop_session *rs, struct evrtsp_request *req, enum evrts
const char *method; const char *method;
const char *url; const char *url;
const char *user_agent; const char *user_agent;
const char *client_name;
int ret; int ret;
method = evrtsp_method(req_method); method = evrtsp_method(req_method);
@ -1121,6 +1122,9 @@ raop_add_headers(struct raop_session *rs, struct evrtsp_request *req, enum evrts
user_agent = cfg_getstr(cfg_getsec(cfg, "general"), "user_agent"); user_agent = cfg_getstr(cfg_getsec(cfg, "general"), "user_agent");
evrtsp_add_header(req->output_headers, "User-Agent", user_agent); evrtsp_add_header(req->output_headers, "User-Agent", user_agent);
client_name = cfg_getstr(cfg_getsec(cfg, "library"), "name");
evrtsp_add_header(req->output_headers, "X-Apple-Client-Name", client_name);
/* Add Authorization header */ /* Add Authorization header */
url = (req_method == EVRTSP_REQ_OPTIONS) ? "*" : rs->session_url; url = (req_method == EVRTSP_REQ_OPTIONS) ? "*" : rs->session_url;