Restrict protocol for service announcement/browsing/resolution to IPv4

unless IPv6 is enabled.
merge-requests/1/head
Julien BLACHE 2008-04-11 17:43:16 +00:00
rodzic f4ff1b74f6
commit eff4892c1c
2 zmienionych plików z 24 dodań i 3 usunięć

Wyświetl plik

@ -757,6 +757,8 @@ net_avahi_browse_callback (AvahiServiceBrowser *b, AvahiIfIndex interface, Avahi
AvahiBrowserEvent event, const char *name, const char *type,
const char *domain, AvahiLookupResultFlags flags, void *userdata)
{
AvahiProtocol proto;
/* unused */
flags = flags;
userdata = userdata;
@ -779,7 +781,12 @@ net_avahi_browse_callback (AvahiServiceBrowser *b, AvahiIfIndex interface, Avahi
/* The resolver object will be freed in the resolver callback, or by
* the server if it terminates before the callback is called.
*/
if (!(avahi_service_resolver_new (avahi_client, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, 0, net_avahi_resolve_callback, NULL)))
#ifdef ENABLE_IPV6
proto = AVAHI_PROTO_UNSPEC;
#else
proto = AVAHI_PROTO_INET;
#endif /* ENABLE_IPV6 */
if (!(avahi_service_resolver_new (avahi_client, interface, protocol, name, type, domain, proto, 0, net_avahi_resolve_callback, NULL)))
DBG (2, "net_avahi_browse_callback: failed to resolve service '%s': %s\n", name, avahi_strerror (avahi_client_errno (avahi_client)));
break;
@ -798,6 +805,7 @@ net_avahi_browse_callback (AvahiServiceBrowser *b, AvahiIfIndex interface, Avahi
static void
net_avahi_callback (AvahiClient *c, AvahiClientState state, void * userdata)
{
AvahiProtocol proto;
int error;
/* unused */
@ -817,7 +825,13 @@ net_avahi_callback (AvahiClient *c, AvahiClientState state, void * userdata)
if (avahi_browser)
return;
avahi_browser = avahi_service_browser_new (c, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, SANED_SERVICE_DNS, NULL, 0, net_avahi_browse_callback, NULL);
#ifdef ENABLE_IPV6
proto = AVAHI_PROTO_UNSPEC;
#else
proto = AVAHI_PROTO_INET;
#endif /* ENABLE_IPV6 */
avahi_browser = avahi_service_browser_new (c, AVAHI_IF_UNSPEC, proto, SANED_SERVICE_DNS, NULL, 0, net_avahi_browse_callback, NULL);
if (avahi_browser == NULL)
{
DBG (1, "net_avahi_callback: could not create service browser: %s\n", avahi_strerror (avahi_client_errno (c)));

Wyświetl plik

@ -2387,6 +2387,7 @@ saned_create_avahi_services (AvahiClient *c)
{
char *n;
char txt[32];
AvahiProtocol proto;
int ret;
if (!c)
@ -2408,7 +2409,13 @@ saned_create_avahi_services (AvahiClient *c)
snprintf(txt, sizeof (txt), "protovers=%x", SANE_VERSION_CODE (V_MAJOR, V_MINOR, SANEI_NET_PROTOCOL_VERSION));
ret = avahi_entry_group_add_service (avahi_group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, avahi_svc_name, SANED_SERVICE_DNS, NULL, NULL, SANED_SERVICE_PORT, txt, NULL);
#ifdef ENABLE_IPV6
proto = AVAHI_PROTO_UNSPEC;
#else
proto = AVAHI_PROTO_INET;
#endif /* ENABLE_IPV6 */
ret = avahi_entry_group_add_service (avahi_group, AVAHI_IF_UNSPEC, proto, 0, avahi_svc_name, SANED_SERVICE_DNS, NULL, NULL, SANED_SERVICE_PORT, txt, NULL);
if (ret < 0)
{
if (ret == AVAHI_ERR_COLLISION)