X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Foserver%2Foserver.c;fp=ccan%2Foserver%2Foserver.c;h=362bfae849fc2ec8aef9c951fc1d3f5b9cd7ef2b;hb=2b79cd40277869a85810c5b14503cdda4f32dedd;hp=d4266eda1ef5ead9329ecd5e4136e307a8a162d4;hpb=92f7f79eb9535a281cab710eedb9878c74b950b8;p=ccan-lca-2011.git 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)