summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRick Bell <richard.s.bell@intel.com>2015-04-21 12:14:04 -0700
committerRick Bell <richard.s.bell@intel.com>2015-04-21 12:14:04 -0700
commitd883c429f878c0d406f26e0fbc01bef049f9d8ba (patch)
treec9e96a8b24b7c3b3a2bf56f9d8c7bc4a9465f852
parent54a0f4fa30f73b23d890b4fdc3d4cb67ae9e13e9 (diff)
downloaddleyna-renderer-revert-132-uid.tar.gz
Revert "Uid"revert-132-uid
-rw-r--r--libdleyna/renderer/device.c54
-rw-r--r--libdleyna/renderer/device.h2
-rw-r--r--libdleyna/renderer/upnp.c7
3 files changed, 9 insertions, 54 deletions
diff --git a/libdleyna/renderer/device.c b/libdleyna/renderer/device.c
index 64b5770..55a245f 100644
--- a/libdleyna/renderer/device.c
+++ b/libdleyna/renderer/device.c
@@ -827,71 +827,21 @@ void dlr_device_construct(
DLEYNA_LOG_DEBUG("Exit");
}
-static char *prv_convert_udn_to_path(const char *udn)
-{
- char *uuid;
- size_t len;
- size_t dest_len;
- size_t i;
-
- /* This function will generate a valid dbus path from the udn
- * We are not going to check the UDN validity. We will try to
- * convert it anyway. To avoid any security problem, we will
- * check some limits and possibily return only a partial
- * UDN. For a better understanding, a valid UDN should be:
- * UDN = "uuid:4Hex-2Hex-2Hex-Hex-Hex-6Hex"
- *
- * The convertion rules are:
- * 1 - An invalid char will be escaped using its hexa representation
- * prefixed with '_': Ex ':' -> '_3A'
- * 2 - The max size of the converted UDN can be 3 times the original
- * size (if all char are not dbus compliant).
- * The max size of a dbus path is an UINT32: G_MAXUINT32
- * We will limit the of the converted string size to G_MAXUINT32 / 2
- * otherwise we will never have space to generate object path.
- */
-
- len = strlen(udn);
- dest_len = MIN(len * 3, G_MAXUINT32 / 2);
-
- uuid = g_malloc(dest_len + 1);
- i = 0;
-
- while (*udn && (i < dest_len))
- {
- if (g_ascii_isalnum(*udn) || (*udn == '_'))
- uuid[i++] = *udn;
- else
- i += g_snprintf(uuid + i, dest_len + 1,"_%02x", *udn);
-
- udn++;
- }
-
-
- uuid[i]=0;
-
- return uuid;
-}
-
dlr_device_t *dlr_device_new(
dleyna_connector_id_t connection,
GUPnPDeviceProxy *proxy,
const gchar *ip_address,
- const char *udn,
+ guint counter,
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);
- uuid = prv_convert_udn_to_path(udn);
- new_path = g_strdup_printf("%s/%s", DLEYNA_SERVER_PATH, uuid);
- g_free(uuid);
-
+ new_path = g_strdup_printf("%s/%u", DLEYNA_SERVER_PATH, counter);
DLEYNA_LOG_DEBUG("Server Path %s", new_path);
dev = g_new0(dlr_device_t, 1);
diff --git a/libdleyna/renderer/device.h b/libdleyna/renderer/device.h
index b0374ad..899b6b2 100644
--- a/libdleyna/renderer/device.h
+++ b/libdleyna/renderer/device.h
@@ -102,7 +102,7 @@ dlr_device_t *dlr_device_new(
dleyna_connector_id_t connection,
GUPnPDeviceProxy *proxy,
const gchar *ip_address,
- const char *udn,
+ guint counter,
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 ac1b08a..1b2b845 100644
--- a/libdleyna/renderer/upnp.c
+++ b/libdleyna/renderer/upnp.c
@@ -45,6 +45,7 @@ struct dlr_upnp_t_ {
void *user_data;
GHashTable *server_udn_map;
GHashTable *server_uc_map;
+ guint counter;
dlr_host_service_t *host_service;
};
@@ -185,10 +186,14 @@ 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,
- udn, upnp->interface_info, queue_id);
+ upnp->counter,
+ 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");