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 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).