}
-static int virNetServerDispatchNewClient(virNetServerServicePtr svc,
- virNetSocketPtr clientsock,
- void *opaque)
+static int virNetServerAddClient(virNetServerPtr srv,
+ virNetServerClientPtr client)
{
- virNetServerPtr srv = opaque;
- virNetServerClientPtr client = NULL;
-
virNetServerLock(srv);
if (srv->nclients >= srv->nclients_max) {
goto error;
}
- if (!(client = virNetServerClientNew(clientsock,
- virNetServerServiceGetAuth(svc),
- virNetServerServiceIsReadonly(svc),
- virNetServerServiceGetMaxRequests(svc),
- virNetServerServiceGetTLSContext(svc),
- srv->clientPrivNew,
- srv->clientPrivFree,
- srv->clientPrivOpaque)))
- goto error;
-
if (virNetServerClientInit(client) < 0)
goto error;
return 0;
error:
- virNetServerClientClose(client);
- virObjectUnref(client);
virNetServerUnlock(srv);
return -1;
}
+static int virNetServerDispatchNewClient(virNetServerServicePtr svc,
+ virNetSocketPtr clientsock,
+ void *opaque)
+{
+ virNetServerPtr srv = opaque;
+ virNetServerClientPtr client;
+
+ if (!(client = virNetServerClientNew(clientsock,
+ virNetServerServiceGetAuth(svc),
+ virNetServerServiceIsReadonly(svc),
+ virNetServerServiceGetMaxRequests(svc),
+ virNetServerServiceGetTLSContext(svc),
+ srv->clientPrivNew,
+ srv->clientPrivFree,
+ srv->clientPrivOpaque)))
+ return -1;
+
+ if (virNetServerAddClient(srv, client) < 0) {
+ virNetServerClientClose(client);
+ virObjectUnref(client);
+ return -1;
+ }
+ virObjectUnref(client);
+ return 0;
+}
+
static void
virNetServerFatalSignal(int sig, siginfo_t *siginfo ATTRIBUTE_UNUSED,