mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-26 12:59:19 -05:00
[spotify] Slightly improved version of recent commit 79fb65f
This commit is contained in:
parent
5779bc56b8
commit
d4a2b11c3e
@ -1033,9 +1033,6 @@ msg_make_client_response_encrypted(uint8_t *out, size_t out_len, struct sp_sessi
|
||||
ClientResponseEncrypted client_response = CLIENT_RESPONSE_ENCRYPTED__INIT;
|
||||
LoginCredentials login_credentials = LOGIN_CREDENTIALS__INIT;
|
||||
SystemInfo system_info = SYSTEM_INFO__INIT;
|
||||
const char *client_name;
|
||||
const char *client_version;
|
||||
const char *client_build_id;
|
||||
char system_information_string[64];
|
||||
char version_string[64];
|
||||
ssize_t len;
|
||||
@ -1064,12 +1061,10 @@ msg_make_client_response_encrypted(uint8_t *out, size_t out_len, struct sp_sessi
|
||||
else
|
||||
return -1;
|
||||
|
||||
// Note that Spotify seems to have whitelisting of client_name
|
||||
client_name = (sp_sysinfo.client_name[0] != '\0') ? sp_sysinfo.client_name : "librespot";
|
||||
client_version = (sp_sysinfo.client_version[0] != '\0') ? sp_sysinfo.client_version : "000000";
|
||||
client_build_id = (sp_sysinfo.client_build_id[0] != '\0') ? sp_sysinfo.client_build_id : "0";
|
||||
snprintf(system_information_string, sizeof(system_information_string), "%s_%s_%s", client_name, client_version, client_build_id);
|
||||
snprintf(version_string, sizeof(version_string), "%s-%s", client_name, client_version);
|
||||
snprintf(system_information_string, sizeof(system_information_string), "%s_%s_%s",
|
||||
sp_sysinfo.client_name, sp_sysinfo.client_version, sp_sysinfo.client_build_id);
|
||||
snprintf(version_string, sizeof(version_string), "%s-%s",
|
||||
sp_sysinfo.client_name, sp_sysinfo.client_version);
|
||||
|
||||
system_info.cpu_family = CPU_FAMILY__CPU_UNKNOWN;
|
||||
system_info.os = OS__OS_UNKNOWN;
|
||||
|
@ -70,6 +70,13 @@
|
||||
// large enough that the file can be probed from the first chunk.
|
||||
#define SP_CHUNK_LEN_WORDS 1024 * 8
|
||||
|
||||
// Used to create default sysinfo, which should be librespot_[short sha]_[random 8 characters build id],
|
||||
// ref https://github.com/plietar/librespot/pull/218. User may override, but
|
||||
// as of 20220516 Spotify seems to have whitelisting of client name.
|
||||
#define SP_CLIENT_NAME_DEFAULT "librespot"
|
||||
#define SP_CLIENT_VERSION_DEFAULT "000000"
|
||||
#define SP_CLIENT_BUILD_ID_DEFAULT "aabbccdd"
|
||||
|
||||
// Shorthand for error handling
|
||||
#define RETURN_ERROR(r, m) \
|
||||
do { ret = (r); sp_errmsg = (m); goto error; } while(0)
|
||||
|
@ -948,6 +948,19 @@ librespotc_last_errmsg(void)
|
||||
return sp_errmsg ? sp_errmsg : "(no error)";
|
||||
}
|
||||
|
||||
static void
|
||||
system_info_set(struct sp_sysinfo *si_out, struct sp_sysinfo *si_user)
|
||||
{
|
||||
memcpy(si_out, si_user, sizeof(struct sp_sysinfo));
|
||||
|
||||
if (si_out->client_name[9] == '\0')
|
||||
snprintf(si_out->client_name, sizeof(si_out->client_name), SP_CLIENT_NAME_DEFAULT);
|
||||
if (si_out->client_version[9] == '\0')
|
||||
snprintf(si_out->client_version, sizeof(si_out->client_version), SP_CLIENT_VERSION_DEFAULT);
|
||||
if (si_out->client_build_id[9] == '\0')
|
||||
snprintf(si_out->client_build_id, sizeof(si_out->client_build_id), SP_CLIENT_BUILD_ID_DEFAULT);
|
||||
}
|
||||
|
||||
int
|
||||
librespotc_init(struct sp_sysinfo *sysinfo, struct sp_callbacks *callbacks)
|
||||
{
|
||||
@ -959,7 +972,7 @@ librespotc_init(struct sp_sysinfo *sysinfo, struct sp_callbacks *callbacks)
|
||||
sp_cb = *callbacks;
|
||||
sp_initialized = true;
|
||||
|
||||
memcpy(&sp_sysinfo, sysinfo, sizeof(struct sp_sysinfo));
|
||||
system_info_set(&sp_sysinfo, sysinfo);
|
||||
|
||||
sp_evbase = event_base_new();
|
||||
if (!sp_evbase)
|
||||
|
Loading…
x
Reference in New Issue
Block a user