we free it. If the server is terminated before the callback
function is called the server will free the resolver for us. */
- avahi_service_resolver_new(s, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, resolve_callback, s);
+ if (!(avahi_service_resolver_new(s, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, resolve_callback, s)))
+ g_message("Failed to resolve service '%s': %s", name, avahi_strerror(avahi_server_errno(s)));
}
int main(int argc, char*argv[]) {
AvahiServerConfig config;
AvahiServer *server = NULL;
AvahiServiceBrowser *sb;
+ gint error;
+ int ret = 1;
/* Do not publish any local records */
avahi_server_config_init(&config);
config.publish_domain = FALSE;
/* Allocate a new server */
- server = avahi_server_new(NULL, &config, NULL, NULL);
+ server = avahi_server_new(NULL, &config, NULL, NULL, &error);
/* Free the configuration data */
avahi_server_config_free(&config);
+ /* Check wether creating the server object succeeded */
+ if (!server) {
+ g_message("Failed to create server: %s", avahi_strerror(error));
+ goto fail;
+ }
+
/* Create the service browser */
- sb = avahi_service_browser_new(server, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_http._tcp", NULL, browse_callback, server);
+ if (!(sb = avahi_service_browser_new(server, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_http._tcp", NULL, browse_callback, server))) {
+ g_message("Failed to create service browser: %s", avahi_strerror(avahi_server_errno(server)));
+ goto fail;
+ }
/* Run the main loop */
main_loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(main_loop);
+ ret = 0;
+
+fail:
+
/* Cleanup things */
if (sb)
avahi_service_browser_free(sb);
if (main_loop)
g_main_loop_unref(main_loop);
- return 0;
+ return ret;
}