[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [libvirt] Re: [PATCH 07/12] Domain Events - remote driver
- From: Ben Guthro <bguthro virtualiron com>
- To: "Daniel P. Berrange" <berrange redhat com>
- Cc: libvir-list redhat com
- Subject: Re: [libvirt] Re: [PATCH 07/12] Domain Events - remote driver
- Date: Mon, 20 Oct 2008 10:48:38 -0400
> Just discovered one tiny problem here - need to check 'event' to see
> if the POLLHUP or POLLERR flags are set, and unregister the callback.
> Otherwise if you kill the server, the client will just spin on POLLHUP
> or ERR forever. Something like this ought todo the trick
>
> if (event & (POLLERR | POLLHUP)) {
> virEventRemoveHandle(fd);
> return;
> }
>
I've been looking over the rest of your changes.
Generally, I agree all these suggestions are good ones...except for the code above
With this code in, I run the following test
1. start libvirtd
2. begin to monitor events with event-test
3. virsh create foo.xml
At this point, the event-test app encounters a HUP, or ERR, and stops monitoring for events - it will only ever get the "Started" event
I handle this in the event-test poll loop via
if ( pfd.revents & POLLHUP ) {
DEBUG0("Reset by peer");
return -1;
}
Is it not a reasonable restriction to require the client app to handle a Hangup?
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]