[libvirt] [PATCH] Make avahi startup more robust.
Daniel Veillard
veillard at redhat.com
Wed Apr 21 21:04:39 UTC 2010
On Wed, Apr 21, 2010 at 03:22:41PM -0400, Chris Lalancette wrote:
> If the hostname of the current virtualization machine
> could not be resolved, then libvirtd would fail to
> start. However, for disconnected operation (on a laptop,
> for instance) the hostname may very legitimately not
> be resolvable. This patch makes it so that if we can't
> resolve the hostname, avahi doesn't fail, it just uses
> a less useful MDNS string.
>
> Signed-off-by: Chris Lalancette <clalance at redhat.com>
> ---
> daemon/libvirtd.c | 28 ++++++++++++++++++++--------
> 1 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index 863bf21..4533f40 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -998,22 +998,34 @@ static int qemudNetworkInit(struct qemud_server *server) {
> struct libvirtd_mdns_group *group;
> struct qemud_socket *sock;
> int port = 0;
> + int ret;
>
> server->mdns = libvirtd_mdns_new();
>
> if (!mdns_name) {
> - char groupname[64], *localhost, *tmp;
> - /* Extract the host part of the potentially FQDN */
> + char *groupname, *localhost, *tmp;
> +
> localhost = virGetHostname(NULL);
> if (localhost == NULL)
> + /* we couldn't resolve the hostname; assume that we are
> + * running in disconnected operation, and report a less
> + * useful Avahi string
> + */
> + ret = virAsprintf(&groupname, "Virtualization Host");
> + else {
> + /* Extract the host part of the potentially FQDN */
> + if ((tmp = strchr(localhost, '.')))
> + *tmp = '\0';
> + ret = virAsprintf(&groupname, "Virtualization Host %s",
> + localhost);
> + }
> + VIR_FREE(localhost);
> + if (ret < 0) {
> + virReportOOMError();
> goto cleanup;
> -
> - if ((tmp = strchr(localhost, '.')))
> - *tmp = '\0';
> - snprintf(groupname, sizeof(groupname)-1, "Virtualization Host %s", localhost);
> - groupname[sizeof(groupname)-1] = '\0';
> + }
> group = libvirtd_mdns_add_group(server->mdns, groupname);
> - VIR_FREE(localhost);
> + VIR_FREE(groupname);
> } else {
> group = libvirtd_mdns_add_group(server->mdns, mdns_name);
> }
Revised version of the patch I tested,
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list