# HG changeset patch # User cl349@firebug.cl.cam.ac.uk # Date 1126030506 0 # Node ID 513ba63787fe3f891284e0502fb1dc4cdeb605d7 # Parent 7c269dd2cf1ffa8f3d2eeef6c70c8b9dd7920af1 Add @releaseDomain watch-event. Signed-off-by: Christian Limpach diff -r 7c269dd2cf1f -r 513ba63787fe tools/xenstore/xenstored_domain.c --- a/tools/xenstore/xenstored_domain.c Tue Sep 06 18:14:31 2005 +0000 +++ b/tools/xenstore/xenstored_domain.c Tue Sep 06 18:15:06 2005 +0000 @@ -360,6 +360,9 @@ void do_release(struct connection *conn, } talloc_free(domain->conn); + + fire_watches(NULL, "@releaseDomain", false); + send_ack(conn, XS_RELEASE); } @@ -367,6 +370,7 @@ void domain_cleanup(void) { xc_dominfo_t dominfo; struct domain *domain, *tmp; + int released = 0; list_for_each_entry_safe(domain, tmp, &domains, list) { if (xc_domain_getinfo(*xc_handle, domain->domid, 1, @@ -375,7 +379,11 @@ void domain_cleanup(void) !dominfo.dying && !dominfo.crashed && !dominfo.shutdown) continue; talloc_free(domain->conn); + released++; } + + if (released) + fire_watches(NULL, "@releaseDomain", false); } void do_get_domain_path(struct connection *conn, const char *domid_str) diff -r 7c269dd2cf1f -r 513ba63787fe tools/xenstore/xenstored_watch.c --- a/tools/xenstore/xenstored_watch.c Tue Sep 06 18:14:31 2005 +0000 +++ b/tools/xenstore/xenstored_watch.c Tue Sep 06 18:15:06 2005 +0000 @@ -132,7 +132,7 @@ void fire_watches(struct connection *con struct watch *watch; /* During transactions, don't fire watches. */ - if (conn->transaction) + if (conn && conn->transaction) return; /* Create an event for each watch. Don't send to self. */