From 2b79cd40277869a85810c5b14503cdda4f32dedd Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 25 Jan 2011 12:26:22 +1030 Subject: [PATCH] lca2011: add dummy max_clients field. --- ccan/oserver/oserver.c | 14 ++++++++++++++ ccan/oserver/oserver_types.h | 1 + 2 files changed, 15 insertions(+) diff --git a/ccan/oserver/oserver.c b/ccan/oserver/oserver.c index d4266ed..362bfae 100644 --- a/ccan/oserver/oserver.c +++ b/ccan/oserver/oserver.c @@ -223,6 +223,17 @@ static int cleanup_client(struct client *client) return 0; } +static unsigned int max_client(struct client *clients[5]) +{ + unsigned int i, ret = 0; + + for (i = 0; i < 5; i++) { + if (clients[i]) + ret = i+1; + } + return ret; +} + static void add_client(struct tevent_context *ev, struct tevent_fd *fde, uint16_t flags, void *_oserver) { @@ -254,6 +265,7 @@ static void add_client(struct tevent_context *ev, /* Full? Stop listening... */ if (client->id == ARRAY_SIZE(oserver->clients)-1) tevent_fd_set_flags(oserver->fde, 0); + oserver->max_clients = max_client(oserver->clients); } static void clear_clients(struct oserver *oserver) @@ -331,6 +343,8 @@ static bool load_file(struct oserver *oserver, const char *file) static bool complete_server(struct tevent_context *ev, struct oserver *oserver, const char *dumpfile) { + oserver->max_clients = max_client(oserver->clients); + /* Re-set this even if restored from file, in case it changed. */ oserver->dumpfile = dumpfile; if (oserver->dumpfile) diff --git a/ccan/oserver/oserver_types.h b/ccan/oserver/oserver_types.h index 9943d09..6f7b42b 100644 --- a/ccan/oserver/oserver_types.h +++ b/ccan/oserver/oserver_types.h @@ -37,6 +37,7 @@ CDUMP_SAVED struct client { }; CDUMP_SAVED struct oserver { + unsigned int max_clients; /* 5 clients should be enough for anybody! */ struct client *clients[5]; int fd; -- 2.39.2