qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: minyard@acm.org, qemu-devel@nongnu.org
Cc: mjg59@srcf.ucam.org, mst@redhat.com, hwd@huawei.com,
	bcketchum@gmail.com, Corey Minyard <cminyard@mvista.com>,
	afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH] chardev: Add reconnecting to client sockets
Date: Sat, 20 Sep 2014 00:33:18 +0200	[thread overview]
Message-ID: <541CAF2E.2030502@redhat.com> (raw)
In-Reply-To: <1411163937-19891-1-git-send-email-minyard@acm.org>

Il 19/09/2014 23:58, minyard@acm.org ha scritto:
> From: Corey Minyard <cminyard@mvista.com>
> 
> Adds a "recon" option to socket backends that gives a reconnect
> timeout.  This only applies to client sockets.  If the other end
> of a socket closes the connection, qemu will attempt to reconnect
> after the given number of seconds.
> 
> This rearranges things a bit, all socket configuration is moved to
> qmp_chardev_open_socket() and that only gets called once at startup.
> qemu_chr_open_socket_fd() is called to open or re-open the connection.

Please do this in a separate patch.

Also:

- qemu-char.c for various reasons is not using QEMU timers.  Please use
glib timers instead.

> +# @recon: #optional If not a server socket, if the socket disconnect
> +#          then reconnect after the given number of seconds.  Setting
> +#          to zero disables this function. (default: 0)

Please specify "Since: 2.2" inside the comment, and give a more
descriptive name such as reconnect-interval to the option.

> +	s->addr = addr; /* Steal the address from the socket */
> +	sock->addr = NULL;

Please do a deep copy instead.  (The sock struct should really be
const).  A function like this will do it for you:

    *p_dest = NULL;

    qov = qmp_output_visitor_new();
    ov = qmp_output_get_visitor(qov);
    visit_type_SocketAddress(ov, &src, NULL, errp);
    obj = qmp_output_get_qobject(data->qov);
    qmp_output_visitor_cleanup(qov);
    if (!obj) {
        return;
    }

    qiv = qmp_input_visitor_new(obj);
    iv = qmp_input_get_visitor(qiv);
    visit_type_SocketAddress(iv, p_dest, NULL, &error_abort);
    qmp_input_visitor_cleanup(qiv);
    qobject_decref(obj);

    ...

    qapi_copy_SocketAddress(&s->addr, sock->addr, &error_abort);

(Something like this should really be automatically generated for all
types...).

I only skimmed the code, but nothing else jumped up.

Paolo

  parent reply	other threads:[~2014-09-19 22:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-19 21:58 [Qemu-devel] [PATCH] chardev: Add reconnecting to client sockets minyard
2014-09-19 22:04 ` Matthew Garrett
2014-09-19 22:33 ` Paolo Bonzini [this message]
2014-09-19 23:27 ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=541CAF2E.2030502@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=afaerber@suse.de \
    --cc=bcketchum@gmail.com \
    --cc=cminyard@mvista.com \
    --cc=hwd@huawei.com \
    --cc=minyard@acm.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).