aboutsummaryrefslogtreecommitdiff
path: root/tests/libtest
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libtest')
-rw-r--r--tests/libtest/Makefile.am7
-rw-r--r--tests/libtest/lib518.c47
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;
+}