From: Gonglei <arei.gonglei@huawei.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Huangweidong (C)" <weidong.huang@huawei.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"Huangpeng (Peter)" <peter.huangpeng@huawei.com>
Subject: Re: [Qemu-devel] [PATCH 0/3] vnc: trivial problem and memory leak fix
Date: Thu, 23 Oct 2014 20:27:23 +0800 [thread overview]
Message-ID: <5448F42B.10907@huawei.com> (raw)
In-Reply-To: <1414066616.30724.10.camel@nilsson.home.kraxel.org>
On 2014/10/23 20:16, Gerd Hoffmann wrote:
> Hi,
>
>>>> Though we call qmp_change_vnc() failed, the content of global variable vnc_display
>>>> still will change, such as 'vs->auth = VNC_AUTH_NONE' now. I think this is not
>>>> reasonable, but I have not good idea to address this issue.
>>>
>>> I think the current behavior is fine. Better be on the safe side (no
>>> connects possible) in case "change vnc $display" failed. You can fix
>>> that using "change vnc 0.0.0.0:10,password,sasl"
>>
>> Yes. we can do this. But is it reasonable that an API return false,
>> but its content changed?
>
> We have: Call failed -> vnc server not working. I think that is ok.
>
> You want: Call failed -> vnc server has previous state. Reasonable
> too, but that is a hard problem. You can try store everything in
> temporary variables while initializing. On success cleanup VncDisplay
> struct and fill with the new data. On failure leave VncDisplay
> untouched. But note that there are tricky corner cases such as binding
> the new listening socket will fail when it is still in use by the old
> listening socket. Or goes on try IPv4 for the new in case the IPv6
> address is in use by the old. Have fun debugging your connection
> problems then!
>
Indeed.
> There is some middle ground -- you can try to do parameter parsing
> first. Any failures there are easily catched. When that succeeds go
> call vnc_display_close + reinitialize. This avoids the problems
> outlined above at the cost of not catching all possible failure modes.
>
Yes.
> If you want try solving this nevertheless I'd suggest to do it on top of
> https://www.kraxel.org/cgit/qemu/log/?h=rebase/ui-vnc-next to avoid
> conflicts.
>
OK.
> Oh, and the switch to QemuOpts for vnc parameter parsing in the branch
> might already improve things.
>
Hmm. That's very useful, Thanks a lot :)
Best regards,
-Gonglei
prev parent reply other threads:[~2014-10-23 12:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-23 5:39 [Qemu-devel] [PATCH 0/3] vnc: trivial problem and memory leak fix arei.gonglei
2014-10-23 5:39 ` [Qemu-devel] [PATCH 1/3] vnc: remove superfluous vnc_display_close() arei.gonglei
2014-10-23 7:09 ` Michael Tokarev
2014-10-23 7:40 ` Gonglei
2014-10-23 5:39 ` [Qemu-devel] [PATCH 2/3] vnc: fix memory leak at vnc_display_open arei.gonglei
2014-10-23 5:39 ` [Qemu-devel] [PATCH 3/3] vnc: remove superfluous DisplayState *ds parameter arei.gonglei
2014-10-23 7:09 ` Michael Tokarev
2014-10-23 7:55 ` Gonglei
2014-10-23 8:08 ` [Qemu-devel] [PATCH 0/3] vnc: trivial problem and memory leak fix Gerd Hoffmann
2014-10-23 8:19 ` Gonglei
2014-10-23 12:16 ` Gerd Hoffmann
2014-10-23 12:27 ` Gonglei [this message]
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=5448F42B.10907@huawei.com \
--to=arei.gonglei@huawei.com \
--cc=kraxel@redhat.com \
--cc=peter.huangpeng@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=weidong.huang@huawei.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.