mirror of
https://github.com/owntone/owntone-server.git
synced 2025-01-26 06:03:20 -05:00
Only do hex conversion if param is 0x-format. Also accept song-spec from Retune (issue #90).
This commit is contained in:
parent
77f206c118
commit
dccbe92a75
@ -638,10 +638,13 @@ dacp_propset_userrating(const char *value, struct evkeyvalq *query)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
param = evhttp_find_header(query, "item-spec");
|
param = evhttp_find_header(query, "item-spec"); // Remote
|
||||||
|
if (!param)
|
||||||
|
param = evhttp_find_header(query, "song-spec"); // Retune
|
||||||
|
|
||||||
if (!param)
|
if (!param)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DACP, "Missing item-spec parameter in dacp.userrating query\n");
|
DPRINTF(E_LOG, L_DACP, "Missing item-spec/song-spec parameter in dacp.userrating query\n");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -649,7 +652,7 @@ dacp_propset_userrating(const char *value, struct evkeyvalq *query)
|
|||||||
param = strchr(param, ':');
|
param = strchr(param, ':');
|
||||||
if (!param)
|
if (!param)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DACP, "Malformed item-spec parameter in dacp.userrating query\n");
|
DPRINTF(E_LOG, L_DACP, "Malformed item-spec/song-spec parameter in dacp.userrating query\n");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -658,7 +661,7 @@ dacp_propset_userrating(const char *value, struct evkeyvalq *query)
|
|||||||
ret = safe_hextou32(param, &itemid);
|
ret = safe_hextou32(param, &itemid);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DACP, "Couldn't convert item-spec to an integer in dacp.userrating (%s)\n", param);
|
DPRINTF(E_LOG, L_DACP, "Couldn't convert item-spec/song-spec to an integer in dacp.userrating (%s)\n", param);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2093,12 +2096,8 @@ dacp_reply_setspeakers(struct evhttp_request *req, struct evbuffer *evbuf, char
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
param++;
|
param++;
|
||||||
/* Hyperfine Remote for Android will send in decimal, others use hex */
|
|
||||||
if ((strlen(param) > 1) && (param[1] != 'x'))
|
|
||||||
ret = safe_atou64(param, &ids[i]);
|
|
||||||
else
|
|
||||||
ret = safe_hextou64(param, &ids[i]);
|
|
||||||
|
|
||||||
|
ret = safe_hextou64(param, &ids[i]);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DACP, "Invalid speaker id in request: %s\n", param);
|
DPRINTF(E_LOG, L_DACP, "Invalid speaker id in request: %s\n", param);
|
||||||
|
@ -119,6 +119,10 @@ safe_hextou32(const char *str, uint32_t *val)
|
|||||||
char *end;
|
char *end;
|
||||||
unsigned long intval;
|
unsigned long intval;
|
||||||
|
|
||||||
|
/* A hex shall begin with 0x */
|
||||||
|
if (strncmp(str, "0x", 2) != 0)
|
||||||
|
return safe_atou32(str, val);
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
intval = strtoul(str, &end, 16);
|
intval = strtoul(str, &end, 16);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user