diff --git a/src/browser.c b/src/browser.c index 97b488e..4a420f8 100644 --- a/src/browser.c +++ b/src/browser.c @@ -103,7 +103,7 @@ static void browse_callback( case AVAHI_BROWSER_REMOVE: fprintf(stderr, "(Browser) REMOVE: service '%s' of type '%s' in domain '%s'\n", name, type, domain); //teleport_app_remove_peer(name); - teleport_peer_remove_peer(peerList, g_strdup(name)); + teleport_peer_remove_peer_by_name(peerList, g_strdup(name)); break; case AVAHI_BROWSER_ALL_FOR_NOW: case AVAHI_BROWSER_CACHE_EXHAUSTED: diff --git a/src/teleportpeer.c b/src/teleportpeer.c index 1631b5b..99b1256 100644 --- a/src/teleportpeer.c +++ b/src/teleportpeer.c @@ -98,11 +98,11 @@ void teleport_peer_add_peer (TeleportPeer *self, gchar * name, gchar * ip, gint void teleport_peer_remove_peer (TeleportPeer *self, Peer *device) { - Peer element; + Peer *element; gboolean found = FALSE; //Maybe I could just compare the addresses for (int i = 0; i < self->list->len && !found; i++) { - Peer *element = g_array_index(self->list, Peer *, i); + element = g_array_index(self->list, Peer *, i); if (g_strcmp0(element->name, device->name) == 0) { found = TRUE; g_array_remove_index(self->list, i); @@ -111,3 +111,18 @@ void teleport_peer_remove_peer (TeleportPeer *self, Peer *device) g_signal_emit (self, signalIds[REMOVE], 0, device); } +void teleport_peer_remove_peer_by_name (TeleportPeer *self, gchar *name) +{ + + g_print("Remove this device %s", name); + Peer *element; + gboolean found = FALSE; + for (int i = 0; i < self->list->len && !found; i++) { + element = g_array_index(self->list, Peer *, i); + if (g_strcmp0(element->name, name) == 0) { + found = TRUE; + g_array_remove_index(self->list, i); + } + } + g_signal_emit (self, signalIds[REMOVE], 0, element); +} diff --git a/src/teleportpeer.h b/src/teleportpeer.h index 1e686b1..ca189e9 100644 --- a/src/teleportpeer.h +++ b/src/teleportpeer.h @@ -18,5 +18,6 @@ gchar* teleport_peer_get_ip (TeleportPeer *self, gint index, GError **error); gint teleport_peer_get_port (TeleportPeer *self, gint index, GError **error); void teleport_peer_add_peer (TeleportPeer *self, gchar * name, gchar * ip, gint port); void teleport_peer_remove_peer (TeleportPeer *, Peer *); +void teleport_peer_remove_peer_by_name (TeleportPeer *, gchar *); #endif /* __TELEPORTPEER_H */