diff options
author | Daniel Stenberg <daniel@haxx.se> | 2004-11-19 08:52:33 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2004-11-19 08:52:33 +0000 |
commit | 1a05a90f1ce86394d7966aaaa9539adaa228c6bf (patch) | |
tree | 2b9cafe58b4fa7bf01d1b58a23bc5e66157d3279 /tests/libtest | |
parent | dcea109bb5ce1c8afeb0510945eb15e86cfcf1dc (diff) |
David Phillips' FD_SETSIZE fix
Diffstat (limited to 'tests/libtest')
-rw-r--r-- | tests/libtest/Makefile.am | 7 | ||||
-rw-r--r-- | tests/libtest/lib518.c | 47 |
2 files changed, 53 insertions, 1 deletions
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am index 923652065..f394ec14b 100644 --- a/tests/libtest/Makefile.am +++ b/tests/libtest/Makefile.am @@ -39,7 +39,8 @@ SUPPORTFILES = first.c test.h # These are all libcurl test programs noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \ - lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 + lib508 lib509 lib510 lib511 lib512 lib513 lib514 lib515 lib516 lib517 \ + lib518 lib500_SOURCES = lib500.c $(SUPPORTFILES) lib500_LDADD = $(LIBDIR)/libcurl.la @@ -112,3 +113,7 @@ lib516_DEPENDENCIES = $(LIBDIR)/libcurl.la lib517_SOURCES = lib517.c $(SUPPORTFILES) lib517_LDADD = $(LIBDIR)/libcurl.la lib517_DEPENDENCIES = $(LIBDIR)/libcurl.la + +lib518_SOURCES = lib518.c $(SUPPORTFILES) +lib518_LDADD = $(LIBDIR)/libcurl.la +lib518_DEPENDENCIES = $(LIBDIR)/libcurl.la diff --git a/tests/libtest/lib518.c b/tests/libtest/lib518.c new file mode 100644 index 000000000..f12bca6de --- /dev/null +++ b/tests/libtest/lib518.c @@ -0,0 +1,47 @@ +#include "test.h" + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include <mprintf.h> + +#ifdef HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif + +#ifndef FD_SETSIZE +#error "this test requires FD_SETSIZE" +#endif + +#define NUM_OPEN (FD_SETSIZE + 10) + +int test(char *URL) +{ + CURLcode res; + CURL *curl; + int fd[NUM_OPEN]; + int i; + + /* open a lot of file descriptors */ + for (i = 0; i < NUM_OPEN; i++) { + fd[i] = open("/dev/null", O_RDONLY); + if (fd[i] == -1) { + fprintf(stderr, "open: attempt #%i: failed to open /dev/null\n", i); + for (i--; i >= 0; i--) + close(fd[i]); + return CURLE_FAILED_INIT; + } + } + + curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, URL); + curl_easy_setopt(curl, CURLOPT_HEADER, TRUE); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + + for (i = 0; i < NUM_OPEN; i++) + close(fd[i]); + + return (int)res; +} |