]> git.ozlabs.org Git - ccan-lca-2011.git/blobdiff - ccan/oserver/oserver.c
lca2011: add dummy max_clients field.
[ccan-lca-2011.git] / ccan / oserver / oserver.c
index d4266eda1ef5ead9329ecd5e4136e307a8a162d4..362bfae849fc2ec8aef9c951fc1d3f5b9cd7ef2b 100644 (file)
@@ -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)