mirror of
https://github.com/owntone/owntone-server.git
synced 2025-03-20 04:24:20 -04:00
[pairing] Only require the pin for kicking off the remote pairing
This commit is contained in:
parent
170e4aaf75
commit
9d72dc9176
20
src/mpd.c
20
src/mpd.c
@ -3639,25 +3639,7 @@ mpd_command_outputs(struct evbuffer *evbuf, int argc, char **argv, char **errmsg
|
|||||||
static void
|
static void
|
||||||
channel_pairing(const char *message)
|
channel_pairing(const char *message)
|
||||||
{
|
{
|
||||||
char *device;
|
remote_pairing_kickoff_bypin(message);
|
||||||
char *pin;
|
|
||||||
char *ptr;
|
|
||||||
|
|
||||||
ptr = strrchr(message, ':');
|
|
||||||
if (!ptr)
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_MPD, "Failed to parse devicename and pin from message '%s' (expected format: \"devicename:pin\"\n", message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pin = ptr + 1;
|
|
||||||
|
|
||||||
device = strdup(message);
|
|
||||||
ptr = strrchr(device, ':');
|
|
||||||
*ptr = '\0';
|
|
||||||
|
|
||||||
remote_pairing_kickoff_bydevicepin(device, pin);
|
|
||||||
free(device);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mpd_channel
|
struct mpd_channel
|
||||||
|
@ -311,26 +311,19 @@ add_remote_mdns_data(const char *id, int family, const char *address, int port,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
add_remote_pin_data(const char *devname, const char *pin)
|
add_remote_pin_data(const char *pin)
|
||||||
{
|
{
|
||||||
struct remote_info *ri;
|
if (!remote_info)
|
||||||
|
|
||||||
if (remote_info && strcmp(remote_info->pi.name, devname) == 0)
|
|
||||||
ri = remote_info;
|
|
||||||
|
|
||||||
if (!ri)
|
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_REMOTE, "Remote '%s' not known from mDNS, ignoring\n", devname);
|
DPRINTF(E_LOG, L_REMOTE, "No remote known from mDNS, ignoring\n");
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINTF(E_DBG, L_REMOTE, "Remote '%s' found\n", devname);
|
DPRINTF(E_DBG, L_REMOTE, "Adding pin to remote '%s'\n", remote_info->pi.name);
|
||||||
|
|
||||||
if (ri->pin)
|
free(remote_info->pin);
|
||||||
free(ri->pin);
|
remote_info->pin = strdup(pin);
|
||||||
|
|
||||||
ri->pin = strdup(pin);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -721,15 +714,15 @@ touch_remote_cb(const char *name, const char *type, const char *domain, const ch
|
|||||||
|
|
||||||
/* Thread: filescanner, mpd */
|
/* Thread: filescanner, mpd */
|
||||||
void
|
void
|
||||||
remote_pairing_kickoff_bydevicepin(const char *devname, const char *pin)
|
remote_pairing_kickoff_bypin(const char *pin)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
DPRINTF(E_INFO, L_REMOTE, "Kickoff pairing data for device '%s' with pin '%s'\n", devname, pin);
|
DPRINTF(E_INFO, L_REMOTE, "Kickoff pairing with pin '%s'\n", pin);
|
||||||
|
|
||||||
CHECK_ERR(L_REMOTE, pthread_mutex_lock(&remote_lck));
|
CHECK_ERR(L_REMOTE, pthread_mutex_lock(&remote_lck));
|
||||||
|
|
||||||
ret = add_remote_pin_data(devname, pin);
|
ret = add_remote_pin_data(pin);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
kickoff_pairing();
|
kickoff_pairing();
|
||||||
|
|
||||||
@ -841,7 +834,7 @@ remote_pairing_kickoff_byfile(char *path)
|
|||||||
|
|
||||||
DPRINTF(E_LOG, L_REMOTE, "Read Remote pairing data (name '%s', pin '%s') from %s\n", devname, pin, path);
|
DPRINTF(E_LOG, L_REMOTE, "Read Remote pairing data (name '%s', pin '%s') from %s\n", devname, pin, path);
|
||||||
|
|
||||||
remote_pairing_kickoff_bydevicepin(devname, pin);
|
remote_pairing_kickoff_bypin(pin);
|
||||||
free(devname);
|
free(devname);
|
||||||
free(pin);
|
free(pin);
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#define __REMOTE_PAIRING_H__
|
#define __REMOTE_PAIRING_H__
|
||||||
|
|
||||||
void
|
void
|
||||||
remote_pairing_kickoff_bydevicepin(const char *devname, const char *pin);
|
remote_pairing_kickoff_bypin(const char *pin);
|
||||||
|
|
||||||
void
|
void
|
||||||
remote_pairing_kickoff_byfile(char *path);
|
remote_pairing_kickoff_byfile(char *path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user