diff options
Diffstat (limited to 'lib/libostp/server.c')
-rw-r--r-- | lib/libostp/server.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/libostp/server.c b/lib/libostp/server.c index c8f164b..aad91e6 100644 --- a/lib/libostp/server.c +++ b/lib/libostp/server.c @@ -199,3 +199,27 @@ listener_close(struct ostp_listener *lp, struct ostp_client *c) memset(&c->session, 0, sizeof(c->session)); --lp->client_count; } + +/* + * Get a list of clients from a listener. + * + * Returns the number of clients on success, + * on failure this function returns a less than + * zero value. + * + * @lp: Listener. + * @res: An array of clients to be set. + */ +int +listener_clients(struct ostp_listener *lp, struct ostp_client **res) +{ + if (lp->client_count == 0 || lp->client_count > MAX_CLIENTS) { + return -1; + } + + for (int i = 0; i < lp->client_count + 1; ++i) { + res[i] = &lp->clients[i]; + } + + return lp->client_count; +} |