qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [synnefo-devel] Re: [PATCH 1/2] monitor: Reset HMP mon-


From: Stratos Psomadakis
Subject: Re: [Qemu-devel] [synnefo-devel] Re: [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>


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]