On Wed, Oct 12, 2011 at 03:43:12PM +0200, Peter Krempa wrote: > If a stream notification message arives from the daemon side, the event > dispatcher only sets the error state for the stream but does not emit > the stream error event and the corresponding callback is not called. > > This patch adds the emision of the event in the cause a stream error > (abortion) happens and the user may act on this using the event > callback. > --- > src/rpc/virnetclientstream.c | 12 ++++++++---- > 1 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/src/rpc/virnetclientstream.c b/src/rpc/virnetclientstream.c > index 7e2d9ae..9049659 100644 > --- a/src/rpc/virnetclientstream.c > +++ b/src/rpc/virnetclientstream.c > @@ -65,7 +65,6 @@ struct _virNetClientStream { > int cbDispatch; > }; > > - > static void > virNetClientStreamEventTimerUpdate(virNetClientStreamPtr st) > { > @@ -76,7 +75,8 @@ virNetClientStreamEventTimerUpdate(virNetClientStreamPtr st) > > if (((st->incomingOffset || st->incomingEOF) && > (st->cbEvents & VIR_STREAM_EVENT_READABLE)) || > - (st->cbEvents & VIR_STREAM_EVENT_WRITABLE)) { > + (st->cbEvents & VIR_STREAM_EVENT_WRITABLE) || > + (st->cbEvents & VIR_STREAM_EVENT_ERROR && st->err.code != VIR_ERR_OK)) { > VIR_DEBUG("Enabling event timer"); > virEventUpdateTimeout(st->cbTimer, 0); > } else { > @@ -85,7 +85,6 @@ virNetClientStreamEventTimerUpdate(virNetClientStreamPtr st) > } > } > > - > static void > virNetClientStreamEventTimer(int timer ATTRIBUTE_UNUSED, void *opaque) > { > @@ -102,6 +101,10 @@ virNetClientStreamEventTimer(int timer ATTRIBUTE_UNUSED, void *opaque) > if (st->cb && > (st->cbEvents & VIR_STREAM_EVENT_WRITABLE)) > events |= VIR_STREAM_EVENT_WRITABLE; > + if (st->cb && > + (st->cbEvents & VIR_STREAM_EVENT_ERROR) && > + st->err.code != VIR_ERR_OK) > + events |= VIR_STREAM_EVENT_ERROR; > > VIR_DEBUG("Got Timer dispatch %d %d offset=%zu", events, st->cbEvents, st->incomingOffset); > if (events) { You shouldn't be checking 'cbEvents & VIR_STREAM_EVENT_ERROR' (or HANGUP). Both those event types are always enabled, whenever cbEvents is set WRITABLE or READABLE. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list