From 596b220c40faa4cc7b889553d41c4cc16518cbd9 Mon Sep 17 00:00:00 2001 From: Edwin van den Oetelaar Date: Sun, 20 Jan 2013 20:51:14 +0800 Subject: [PATCH] align test server extpoll with library dynamic approach Signed-off-by: Edwin van den Oetelaar --- test-server/test-server.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/test-server/test-server.c b/test-server/test-server.c index c07a9b9..2d9b5f8 100644 --- a/test-server/test-server.c +++ b/test-server/test-server.c @@ -35,10 +35,10 @@ static int close_testing; #ifdef EXTERNAL_POLL #define LWS_NO_FORK -#define MAX_POLL_ELEMENTS 32000 +int max_poll_elements; -struct pollfd pollfds[MAX_POLL_ELEMENTS]; -int fd_lookup[MAX_POLL_ELEMENTS]; +struct pollfd *pollfds; +int *fd_lookup; int count_pollfds; #endif /* EXTERNAL_POLL */ @@ -160,7 +160,7 @@ static int callback_http(struct libwebsocket_context *context, case LWS_CALLBACK_ADD_POLL_FD: - if (count_pollfds >= MAX_POLL_ELEMENTS) { + if (count_pollfds >= max_poll_elements) { lwsl_err("LWS_CALLBACK_ADD_POLL_FD: too many sockets to track\n"); return 1; } @@ -585,6 +585,15 @@ int main(int argc, char **argv) "licensed under LGPL2.1\n"); if (!use_ssl) cert_path = key_path = NULL; +#ifdef EXTERNAL_POLL + max_poll_elements = getdtablesize(); + pollfds = malloc(max_poll_elements * sizeof (struct pollfd)); + fd_lookup = malloc(max_poll_elements * sizeof (int)); + if (pollfds == NULL || fd_lookup == NULL) { + lwsl_err("Out of memory pollfds=%d\n", max_poll_elements); + return -1; + } +#endif context = libwebsocket_create_context(port, interface, protocols, #ifndef LWS_NO_EXTENSIONS -- 2.7.4