X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fnetlink.c;h=88979e10f6e62129d0474fb4d1759d62f4a77566;hb=fd84f9ae1c1ccaf7090e0b4f8876948bea040117;hp=92ed4367e40943c8f6a0d6d4d7ac926fdf4a5443;hpb=c58379bde376cb2298fca14f83a86626f1b76f2f;p=catta diff --git a/avahi-core/netlink.c b/avahi-core/netlink.c index 92ed436..88979e1 100644 --- a/avahi-core/netlink.c +++ b/avahi-core/netlink.c @@ -26,10 +26,11 @@ #include #include #include +#include #include "netlink.h" -struct _AvahiNetlink { +struct AvahiNetlink { GMainContext *context; gint fd; guint seq; @@ -43,16 +44,18 @@ gboolean avahi_netlink_work(AvahiNetlink *nl, gboolean block) { g_assert(nl); for (;;) { - guint8 replybuf[64*1024]; ssize_t bytes; - struct nlmsghdr *p = (struct nlmsghdr *) replybuf; + struct nlmsghdr *p; + guint8 buffer[64*1024]; - if ((bytes = recv(nl->fd, replybuf, sizeof(replybuf), block ? 0 : MSG_DONTWAIT)) < 0) { + p = (struct nlmsghdr *) buffer; + + if ((bytes = recv(nl->fd, buffer, sizeof(buffer), block ? 0 : MSG_DONTWAIT)) < 0) { if (errno == EAGAIN || errno == EINTR) break; - g_warning("NETLINK: recv() failed"); + g_warning("NETLINK: recv() failed: %s", strerror(errno)); return FALSE; } @@ -160,7 +163,7 @@ AvahiNetlink *avahi_netlink_new(GMainContext *context, gint priority, guint32 gr void avahi_netlink_free(AvahiNetlink *nl) { g_assert(nl); - + g_source_destroy(nl->source); g_source_unref(nl->source); g_main_context_unref(nl->context);