diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index d1f80e4594..118aa92fa6 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -486,6 +486,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, unix_sock_gid, config->auth_unix_rw, false, + config->max_client_requests, NULL))) goto error; if (sock_path_ro && @@ -494,6 +495,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, unix_sock_gid, config->auth_unix_ro, true, + config->max_client_requests, NULL))) goto error; @@ -509,6 +511,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, config->tcp_port, config->auth_tcp, false, + config->max_client_requests, NULL))) goto error; @@ -543,6 +546,7 @@ static int daemonSetupNetworking(virNetServerPtr srv, config->tls_port, config->auth_tls, false, + config->max_client_requests, ctxt))) { virNetTLSContextFree(ctxt); goto error; diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c index 57a3446d39..aac4c3c3fe 100644 --- a/src/rpc/virnetserverclient.c +++ b/src/rpc/virnetserverclient.c @@ -282,6 +282,7 @@ virNetServerClientCheckAccess(virNetServerClientPtr client) virNetServerClientPtr virNetServerClientNew(virNetSocketPtr sock, int auth, bool readonly, + size_t nrequests_max, virNetTLSContextPtr tls) { virNetServerClientPtr client; @@ -301,7 +302,7 @@ virNetServerClientPtr virNetServerClientNew(virNetSocketPtr sock, client->auth = auth; client->readonly = readonly; client->tlsCtxt = tls; - client->nrequests_max = 10; /* XXX */ + client->nrequests_max = nrequests_max; if (tls) virNetTLSContextRef(tls); diff --git a/src/rpc/virnetserverclient.h b/src/rpc/virnetserverclient.h index 0994890128..66510c31c5 100644 --- a/src/rpc/virnetserverclient.h +++ b/src/rpc/virnetserverclient.h @@ -41,6 +41,7 @@ typedef int (*virNetServerClientFilterFunc)(virNetServerClientPtr client, virNetServerClientPtr virNetServerClientNew(virNetSocketPtr sock, int auth, bool readonly, + size_t nrequests_max, virNetTLSContextPtr tls); int virNetServerClientAddFilter(virNetServerClientPtr client, diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c index e5a47b0753..e84f72c918 100644 --- a/src/rpc/virnetserverservice.c +++ b/src/rpc/virnetserverservice.c @@ -39,6 +39,7 @@ struct _virNetServerService { int auth; bool readonly; + size_t nrequests_client_max; virNetTLSContextPtr tls; @@ -65,6 +66,7 @@ static void virNetServerServiceAccept(virNetSocketPtr sock, if (!(client = virNetServerClientNew(clientsock, svc->auth, svc->readonly, + svc->nrequests_client_max, svc->tls))) goto error; @@ -88,6 +90,7 @@ virNetServerServicePtr virNetServerServiceNewTCP(const char *nodename, const char *service, int auth, bool readonly, + size_t nrequests_client_max, virNetTLSContextPtr tls) { virNetServerServicePtr svc; @@ -99,6 +102,7 @@ virNetServerServicePtr virNetServerServiceNewTCP(const char *nodename, svc->refs = 1; svc->auth = auth; svc->readonly = readonly; + svc->nrequests_client_max = nrequests_client_max; svc->tls = tls; if (tls) virNetTLSContextRef(tls); @@ -138,6 +142,7 @@ virNetServerServicePtr virNetServerServiceNewUNIX(const char *path, gid_t grp, int auth, bool readonly, + size_t nrequests_client_max, virNetTLSContextPtr tls) { virNetServerServicePtr svc; @@ -149,6 +154,7 @@ virNetServerServicePtr virNetServerServiceNewUNIX(const char *path, svc->refs = 1; svc->auth = auth; svc->readonly = readonly; + svc->nrequests_client_max = nrequests_client_max; svc->tls = tls; if (tls) virNetTLSContextRef(tls); diff --git a/src/rpc/virnetserverservice.h b/src/rpc/virnetserverservice.h index 378fa0b32c..935759821b 100644 --- a/src/rpc/virnetserverservice.h +++ b/src/rpc/virnetserverservice.h @@ -40,12 +40,14 @@ virNetServerServicePtr virNetServerServiceNewTCP(const char *nodename, const char *service, int auth, bool readonly, + size_t nrequests_client_max, virNetTLSContextPtr tls); virNetServerServicePtr virNetServerServiceNewUNIX(const char *path, mode_t mask, gid_t grp, int auth, bool readonly, + size_t nrequests_client_max, virNetTLSContextPtr tls); int virNetServerServiceGetPort(virNetServerServicePtr svc);