GSocket *socket;
GError *err = NULL;
int port;
+ gchar *address;
if (self->priv->address) {
inet_addr = g_inet_address_new_from_string (self->priv->address);
bound_addr = g_socket_get_local_address (socket, NULL);
port = g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (bound_addr));
- GST_DEBUG_OBJECT (self, "bound on UDP port %d", port);
- g_object_unref (bound_addr);
-
+ inet_addr =
+ g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (bound_addr));
+ address = g_inet_address_to_string (inet_addr);
+
+ if (g_strcmp0 (address, self->priv->address)) {
+ g_free (self->priv->address);
+ self->priv->address = address;
+ GST_DEBUG_OBJECT (self, "notifying address %s", address);
+ g_object_notify (G_OBJECT (self), "address");
+ } else {
+ g_free (address);
+ }
if (port != self->priv->port) {
self->priv->port = port;
GST_DEBUG_OBJECT (self, "notifying port %d", port);
g_object_notify (G_OBJECT (self), "port");
}
+ GST_DEBUG_OBJECT (self, "bound on UDP address %s, port %d", address, port);
+ g_object_unref (bound_addr);
self->priv->socket = socket;
self->priv->cancel = g_cancellable_new ();