From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: marcandre.lureau@redhat.com, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH] chardev: report the handshake error
Date: Wed, 10 May 2023 10:38:40 +0100 [thread overview]
Message-ID: <ZFtmIDzlZw0/Ygtu@redhat.com> (raw)
In-Reply-To: <877ctg7csj.fsf@pond.sub.org>
On Wed, May 10, 2023 at 11:31:40AM +0200, Markus Armbruster wrote:
> marcandre.lureau@redhat.com writes:
>
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > This can help to debug connection issues.
> >
> > Related to:
> > https://bugzilla.redhat.com/show_bug.cgi?id=2196182
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> > chardev/char-socket.c | 12 ++++++++++--
> > 1 file changed, 10 insertions(+), 2 deletions(-)
> >
> > diff --git a/chardev/char-socket.c b/chardev/char-socket.c
> > index 8c58532171..e8e3a743d5 100644
> > --- a/chardev/char-socket.c
> > +++ b/chardev/char-socket.c
> > @@ -742,8 +742,12 @@ static void tcp_chr_websock_handshake(QIOTask *task, gpointer user_data)
> > {
> > Chardev *chr = user_data;
> > SocketChardev *s = user_data;
> > + Error *err = NULL;
> >
> > - if (qio_task_propagate_error(task, NULL)) {
> > + if (qio_task_propagate_error(task, &err)) {
> > + error_reportf_err(err,
> > + "websock handshake of character device %s failed: ",
> > + chr->label);
>
> Code smell: reports an error without failing the function.
>
> Should it be a warning instead?
Well it isn't a warning, this is a fatal error wrt continued use
of the chardev
Not failing the function is expected in this particular code
pattern. These tcp_chr_(tls,websock)_handshake functions are
callbacks that are used to handle an async operations progress.
From the caller's POV, it doesn't matter whether there is an
error or success. It is upto this function to do whatever is
required based on the status, hence the call to disconnect
the chardev on error:
> > tcp_chr_disconnect(chr);
> > } else {
> > if (s->do_telnetopt) {
> > @@ -778,8 +782,12 @@ static void tcp_chr_tls_handshake(QIOTask *task,
> > {
> > Chardev *chr = user_data;
> > SocketChardev *s = user_data;
> > + Error *err = NULL;
> >
> > - if (qio_task_propagate_error(task, NULL)) {
> > + if (qio_task_propagate_error(task, &err)) {
> > + error_reportf_err(err,
> > + "TLS handshake of character device %s failed: ",
> > + chr->label);
> > tcp_chr_disconnect(chr);
> > } else {
> > if (s->is_websock) {
>
> Likewise.
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2023-05-10 9:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-10 7:25 [PATCH] chardev: report the handshake error marcandre.lureau
2023-05-10 9:21 ` Daniel P. Berrangé
2023-05-10 9:31 ` Markus Armbruster
2023-05-10 9:33 ` Marc-André Lureau
2023-05-10 9:38 ` Daniel P. Berrangé [this message]
2023-05-10 9:48 ` Marc-André Lureau
2023-05-10 10:34 ` Markus Armbruster
2023-05-10 10:43 ` Daniel P. Berrangé
2023-05-10 12:33 ` Markus Armbruster
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=ZFtmIDzlZw0/Ygtu@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@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).