[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [synnefo-devel] Re: [Qemu-devel] [PATCH 1/2] monitor:
From: |
Stratos Psomadakis |
Subject: |
Re: [Qemu-stable] [synnefo-devel] Re: [Qemu-devel] [PATCH 1/2] monitor: Reset HMP mon->rs on CHR_EVENT_CLOSED |
Date: |
Fri, 12 Sep 2014 16:53:32 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
On 12/09/2014 09:58 πμ, Markus Armbruster wrote:
> Stratos Psomadakis <address@hidden> writes:
>
>> Commit cdaa86a54 ("Add G_IO_HUP handler for socket chardev") exposed a
>> bug in the way the HMP monitor handles its input. When a client closes
>> the connection to the monitor, tcp_chr_read() will catch the HUP
>> 'signal' and call tcp_chr_disconnect() to close the server-side
>> connection too.
> Your wording suggests SIGUP, but that's misleading. Suggest
> "tcp_chr_read() will detect the G_IO_HUP condition, and call".
ack
>
>> Due to the fact that monitor reads 1 byte at a time (for
>> each tcp_chr_read()), the monitor readline state / buffers can be left
>> in an inconsistent state (i.e. a half-finished command).
> The state is not really inconsistent, there's just junk left in
> rs->cmd_buf[].
ack
>> Thus, without
>> calling readline_restart() on mon->rs upon CHR_EVENT_CLOSED, future HMP
>> commands will fail.
> To make sure I understand you correctly: when you connect again, any
> leftover junk is prepended to your input, which messes up your first
> command. Correct?
Yeap.
>> Signed-off-by: Stratos Psomadakis <address@hidden>
>> Signed-off-by: Dimitris Aragiorgis <address@hidden>
>> ---
>> monitor.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/monitor.c b/monitor.c
>> index 34cee74..7857300 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -5252,6 +5252,7 @@ static void monitor_event(void *opaque, int event)
>> break;
>>
>> case CHR_EVENT_CLOSED:
>> + readline_restart(mon->rs);
>> mon_refcount--;
>> monitor_fdsets_cleanup();
>> break;
> Patch looks good to me.
ok, I'll edit the commit msg and resend the patch.
Thanks,
Stratos
>
--
Stratos Psomadakis
<address@hidden>
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-stable] [synnefo-devel] Re: [Qemu-devel] [PATCH 1/2] monitor: Reset HMP mon->rs on CHR_EVENT_CLOSED,
Stratos Psomadakis <=