mirror of
https://github.com/owntone/owntone-server.git
synced 2025-05-23 10:31:56 -04:00
[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:
parent
7193d0a243
commit
b88df4b4e8
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user