char *name;
+ /* Immutable pointer, self-locking APIs */
virThreadPoolPtr workers;
char *mdnsGroupName;
VIR_FREE(job);
}
-static void virNetServerDispatchNewMessage(virNetServerClientPtr client,
- virNetMessagePtr msg,
- void *opaque)
+
+static void
+virNetServerDispatchNewMessage(virNetServerClientPtr client,
+ virNetMessagePtr msg,
+ void *opaque)
{
virNetServerPtr srv = opaque;
virNetServerProgramPtr prog = NULL;
break;
}
}
+ /* we can unlock @srv since @prog can only become invalid in case
+ * of disposing @srv, but let's grab a ref first to ensure nothing
+ * disposes of it before we use it. */
+ virObjectRef(srv);
+ virObjectUnlock(srv);
if (srv->workers) {
virNetServerJobPtr job;
goto error;
}
- virObjectUnlock(srv);
+ virObjectUnref(srv);
return;
error:
virNetMessageFree(msg);
virNetServerClientClose(client);
- virObjectUnlock(srv);
+ virObjectUnref(srv);
}
+
/**
* virNetServerCheckLimits:
* @srv: server to check limits on