On 05/02/2012 05:44 AM, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange(a)redhat.com>
When dispatching an RPC API call, setup the access manager to hold
the real & effective identities of the current server client whose
RPC is being dispatched. The setting is thread-local, so only
affects the API call in this thread
---
src/rpc/virnetserverclient.c | 41 +++++++++++++++++++++++++++++++++++++++++
src/rpc/virnetserverclient.h | 3 +++
src/rpc/virnetserverprogram.c | 9 +++++++++
3 files changed, 53 insertions(+)
*
@@ -415,6 +418,12 @@ virNetServerProgramDispatchCall(virNetServerProgramPtr prog,
*/
rv = (dispatcher->func)(server, client, msg, &rerr, arg, ret);
+ if (virNetServerClientDeactivateIdentity(client) < 0) {
+ virErrorPtr err = virGetLastError();
+ VIR_WARN("Failed to deactive identity %s", err ? err->message :
"null");
s/deactive/deactivate/
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org