[pairing] Only require the pin for kicking off the remote pairing

This commit is contained in:
chme 2017-03-25 11:07:39 +01:00 committed by ejurgensen
parent 170e4aaf75
commit 9d72dc9176
3 changed files with 12 additions and 37 deletions

View File

@ -3639,25 +3639,7 @@ mpd_command_outputs(struct evbuffer *evbuf, int argc, char **argv, char **errmsg
static void
channel_pairing(const char *message)
{
char *device;
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);
remote_pairing_kickoff_bypin(message);
}
struct mpd_channel

View File

@ -311,26 +311,19 @@ add_remote_mdns_data(const char *id, int family, const char *address, int port,
}
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 && strcmp(remote_info->pi.name, devname) == 0)
ri = remote_info;
if (!ri)
if (!remote_info)
{
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;
}
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(ri->pin);
ri->pin = strdup(pin);
free(remote_info->pin);
remote_info->pin = strdup(pin);
return 0;
}
@ -721,15 +714,15 @@ touch_remote_cb(const char *name, const char *type, const char *domain, const ch
/* Thread: filescanner, mpd */
void
remote_pairing_kickoff_bydevicepin(const char *devname, const char *pin)
remote_pairing_kickoff_bypin(const char *pin)
{
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));
ret = add_remote_pin_data(devname, pin);
ret = add_remote_pin_data(pin);
if (ret == 0)
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);
remote_pairing_kickoff_bydevicepin(devname, pin);
remote_pairing_kickoff_bypin(pin);
free(devname);
free(pin);
}

View File

@ -3,7 +3,7 @@
#define __REMOTE_PAIRING_H__
void
remote_pairing_kickoff_bydevicepin(const char *devname, const char *pin);
remote_pairing_kickoff_bypin(const char *pin);
void
remote_pairing_kickoff_byfile(char *path);