summaryrefslogtreecommitdiff
path: root/libdleyna/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'libdleyna/renderer')
-rw-r--r--libdleyna/renderer/device.c12
-rw-r--r--libdleyna/renderer/device.h2
-rw-r--r--libdleyna/renderer/upnp.c7
3 files changed, 12 insertions, 9 deletions
diff --git a/libdleyna/renderer/device.c b/libdleyna/renderer/device.c
index d5aa82c..f2766e1 100644
--- a/libdleyna/renderer/device.c
+++ b/libdleyna/renderer/device.c
@@ -820,18 +820,26 @@ dlr_device_t *dlr_device_new(
dleyna_connector_id_t connection,
GUPnPDeviceProxy *proxy,
const gchar *ip_address,
- guint counter,
+ const char *udn,
const dleyna_connector_dispatch_cb_t *dispatch_table,
const dleyna_task_queue_key_t *queue_id)
{
dlr_device_t *dev;
gchar *new_path;
+ gchar *uuid;
dlr_device_context_t *context;
DLEYNA_LOG_DEBUG("New Device on %s", ip_address);
- new_path = g_strdup_printf("%s/%u", DLEYNA_SERVER_PATH, counter);
+ /* Strip 'uuid:' string prefix if exists and replace unauthorized
+ * dbus path char from uuid string */
+ uuid = strchr(udn, ':');
+ uuid = g_strdup(uuid ? uuid + 1 : udn);
+ uuid = g_strdelimit(uuid, "-", '_');
+
+ new_path = g_strdup_printf("%s/%s", DLEYNA_SERVER_PATH, uuid);
DLEYNA_LOG_DEBUG("Server Path %s", new_path);
+ g_free(uuid);
dev = g_new0(dlr_device_t, 1);
diff --git a/libdleyna/renderer/device.h b/libdleyna/renderer/device.h
index 70692f3..dd39081 100644
--- a/libdleyna/renderer/device.h
+++ b/libdleyna/renderer/device.h
@@ -101,7 +101,7 @@ dlr_device_t *dlr_device_new(
dleyna_connector_id_t connection,
GUPnPDeviceProxy *proxy,
const gchar *ip_address,
- guint counter,
+ const char *udn,
const dleyna_connector_dispatch_cb_t *dispatch_table,
const dleyna_task_queue_key_t *queue_id);
diff --git a/libdleyna/renderer/upnp.c b/libdleyna/renderer/upnp.c
index fefc340..bd9a688 100644
--- a/libdleyna/renderer/upnp.c
+++ b/libdleyna/renderer/upnp.c
@@ -45,7 +45,6 @@ struct dlr_upnp_t_ {
void *user_data;
GHashTable *server_udn_map;
GHashTable *server_uc_map;
- guint counter;
dlr_host_service_t *host_service;
};
@@ -186,14 +185,10 @@ static void prv_server_available_cb(GUPnPControlPoint *cp,
queue_id = prv_create_device_queue(&priv_t);
device = dlr_device_new(upnp->connection, proxy, ip_address,
- upnp->counter,
- upnp->interface_info,
- queue_id);
+ udn, upnp->interface_info, queue_id);
prv_update_device_context(priv_t, upnp, udn, device, ip_address,
queue_id);
-
- upnp->counter++;
} else {
DLEYNA_LOG_DEBUG("Device Found");