On 25.07.2013 16:37, Daniel P. Berrange wrote: > On Thu, Jul 25, 2013 at 04:23:32PM +0200, Michal Privoznik wrote: >> Currently, even if max_client limit is hit, we accept() incoming >> connection request, but close it immediately. This has disadvantage of >> not using listen() queue. We should accept() only those clients we >> know we can serve and let all other wait in the (limited) queue. >> --- >> src/rpc/virnetserver.c | 40 ++++++++++++++++++++++++++++++++++++++++ >> src/rpc/virnetserverservice.c | 9 +++++++++ >> src/rpc/virnetserverservice.h | 4 ++++ >> 3 files changed, 53 insertions(+) >> >> + if (svc->dispatchCheckFunc && >> + svc->dispatchCheckFunc(svc, sock, svc->dispatchOpaque) < 0) { >> + /* Accept declined */ >> + goto cleanup; >> + } >> + > > Rather than having this callback, can we not simply change virNetServerAddClient() > to call virNetServerUpdateServices(srv, false); when a new client causes us to hit > the max limit ? > No, because that callback is called *after* accept() which I am trying to avoid. Michal > Daniel > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list