diff options
Diffstat (limited to 'libdleyna/renderer')
-rw-r--r-- | libdleyna/renderer/device.c | 12 | ||||
-rw-r--r-- | libdleyna/renderer/device.h | 2 | ||||
-rw-r--r-- | libdleyna/renderer/upnp.c | 7 |
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"); |