summaryrefslogtreecommitdiffstats
path: root/lassi-avahi.c
diff options
context:
space:
mode:
Diffstat (limited to 'lassi-avahi.c')
-rw-r--r--lassi-avahi.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lassi-avahi.c b/lassi-avahi.c
index 79fec53..a247070 100644
--- a/lassi-avahi.c
+++ b/lassi-avahi.c
@@ -7,8 +7,6 @@
#include "lassi-avahi.h"
-#define SERVICE_TYPE "_mango-lassi._tcp"
-
/* FIXME: Error and collision handling is suboptimal */
static void resolve_cb(
@@ -72,7 +70,10 @@ static void browse_cb(
switch (event) {
case AVAHI_BROWSER_NEW:
- if (!(flags & AVAHI_LOOKUP_RESULT_OUR_OWN))
+ if (!(flags & AVAHI_LOOKUP_RESULT_OUR_OWN) &&
+ !lassi_server_is_connected(i->server, name) &&
+ lassi_server_is_known(i->server, name))
+
if (!(avahi_service_resolver_new(i->client, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, 0, resolve_cb, i)))
g_message("Failed to resolve service '%s': %s", name, avahi_strerror(avahi_client_errno(i->client)));
break;
@@ -146,7 +147,7 @@ static void create_service(LassiAvahiInfo *i) {
if (!i->service_name)
i->service_name = g_strdup(i->server->id);
- if ((ret = avahi_entry_group_add_service(i->group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, i->service_name, SERVICE_TYPE, NULL, NULL, i->server->port, NULL)) < 0) {
+ if ((ret = avahi_entry_group_add_service(i->group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, i->service_name, LASSI_SERVICE_TYPE, NULL, NULL, i->server->port, NULL)) < 0) {
g_message("Failed to add service: %s", avahi_strerror(ret));
gtk_main_quit();
return;
@@ -209,7 +210,7 @@ int lassi_avahi_init(LassiAvahiInfo *i, LassiServer *server) {
goto fail;
}
- if (!(i->browser = avahi_service_browser_new(i->client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, SERVICE_TYPE, NULL, 0, browse_cb, i))) {
+ if (!(i->browser = avahi_service_browser_new(i->client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, LASSI_SERVICE_TYPE, NULL, 0, browse_cb, i))) {
g_message("avahi_service_browser_new(): %s", avahi_strerror(avahi_client_errno(i->client)));
goto fail;
}