-/* $Id$ */
-
/***
This file is part of avahi.
if (sendmsg(fd, msg, flags) >= 0)
break;
+ if (errno == EINTR)
+ continue;
+
if (errno != EAGAIN) {
- avahi_log_debug("sendmsg() failed: %s", strerror(errno));
+ char where[64];
+ struct sockaddr_in *sin = msg->msg_name;
+
+ inet_ntop(sin->sin_family, &sin->sin_addr, where, sizeof(where));
+ avahi_log_debug("sendmsg() to %s failed: %s", where, strerror(errno));
return -1;
}
goto fail;
}
+ /* For corrupt packets FIONREAD returns zero size (See rhbz #607297) */
+ if (!ms)
+ goto fail;
+
p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
io.iov_base = AVAHI_DNS_PACKET_DATA(p);
goto fail;
}
+ /* For corrupt packets FIONREAD returns zero size (See rhbz #607297) */
+ if (!ms)
+ goto fail;
+
p = avahi_dns_packet_new(ms + AVAHI_DNS_PACKET_EXTRA_SIZE);
io.iov_base = AVAHI_DNS_PACKET_DATA(p);