Patchwork QMP: Fix asynchronous events delivery

login
register
mail settings
Submitter Luiz Capitulino
Date Jan. 20, 2010, 12:37 p.m.
Message ID <20100120103759.219e043f@doriath>
Download mbox | patch
Permalink /patch/43278/
State New
Headers show

Comments

Luiz Capitulino - Jan. 20, 2010, 12:37 p.m.
Commit f039a563f200beee80cc10fd70b21ea396979dab introduces
a regression as monitor_protocol_event() will return in
the first user Monitor it finds in the QLIST_FOREACH()
loop.

The right thing to do is to only delivery an asynchronous
event if the 'mon' is a QMP Monitor.

The aforementioned commit was an early version, if it was
applied to stable (it should) this one has to be applied
there too.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 monitor.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)
Adam Litke - Jan. 20, 2010, 2:19 p.m.
On Wed, 2010-01-20 at 10:37 -0200, Luiz Capitulino wrote:
> Commit f039a563f200beee80cc10fd70b21ea396979dab introduces
> a regression as monitor_protocol_event() will return in
> the first user Monitor it finds in the QLIST_FOREACH()
> loop.
> 
> The right thing to do is to only delivery an asynchronous
> event if the 'mon' is a QMP Monitor.
> 
> The aforementioned commit was an early version, if it was
> applied to stable (it should) this one has to be applied
> there too.
> 
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>

Acked-by: Adam Litke <agl@us.ibm.com>
Anthony Liguori - Jan. 20, 2010, 2:56 p.m.
On 01/20/2010 06:37 AM, Luiz Capitulino wrote:
> Commit f039a563f200beee80cc10fd70b21ea396979dab introduces
> a regression as monitor_protocol_event() will return in
> the first user Monitor it finds in the QLIST_FOREACH()
> loop.
>
> The right thing to do is to only delivery an asynchronous
> event if the 'mon' is a QMP Monitor.
>
> The aforementioned commit was an early version, if it was
> applied to stable (it should) this one has to be applied
> there too.
>
> Signed-off-by: Luiz Capitulino<lcapitulino@redhat.com>
>    

Applied.  Thanks.

Regards,

Anthony Liguori
> ---
>   monitor.c |    7 +++----
>   1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index 938eb3b..b2b88c1 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -377,10 +377,9 @@ void monitor_protocol_event(MonitorEvent event, QObject *data)
>       }
>
>       QLIST_FOREACH(mon,&mon_list, entry) {
> -        if (!monitor_ctrl_mode(mon))
> -            return;
> -
> -        monitor_json_emitter(mon, QOBJECT(qmp));
> +        if (monitor_ctrl_mode(mon)) {
> +            monitor_json_emitter(mon, QOBJECT(qmp));
> +        }
>       }
>       QDECREF(qmp);
>   }
>

Patch

diff --git a/monitor.c b/monitor.c
index 938eb3b..b2b88c1 100644
--- a/monitor.c
+++ b/monitor.c
@@ -377,10 +377,9 @@  void monitor_protocol_event(MonitorEvent event, QObject *data)
     }
 
     QLIST_FOREACH(mon, &mon_list, entry) {
-        if (!monitor_ctrl_mode(mon))
-            return;
-
-        monitor_json_emitter(mon, QOBJECT(qmp));
+        if (monitor_ctrl_mode(mon)) {
+            monitor_json_emitter(mon, QOBJECT(qmp));
+        }
     }
     QDECREF(qmp);
 }