diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am
index b901c545d0e5b64708b9d847d636a0239141865b..99d7d8cf5e0c458388196ae335e2a64622bc77fc 100644
--- a/tests/libtest/Makefile.am
+++ b/tests/libtest/Makefile.am
@@ -11,7 +11,7 @@ LIBDIR = ../../lib
 SUPPORTFILES = first.c test.h
 
 # here are all tools used for running libcurl tests
-noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506
+noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507
 
 lib500_SOURCES = lib500.c $(SUPPORTFILES)
 lib500_LDADD = $(LIBDIR)/libcurl.la
@@ -41,3 +41,6 @@ lib506_SOURCES = lib506.c $(SUPPORTFILES)
 lib506_LDADD = $(LIBDIR)/libcurl.la
 lib506_DEPENDENCIES = $(LIBDIR)/libcurl.la
 
+lib507_SOURCES = lib507.c $(SUPPORTFILES)
+lib507_LDADD = $(LIBDIR)/libcurl.la
+lib507_DEPENDENCIES = $(LIBDIR)/libcurl.la
diff --git a/tests/libtest/lib507.c b/tests/libtest/lib507.c
new file mode 100644
index 0000000000000000000000000000000000000000..14004f3d9fe520df8294da66536fd2bb6341e688
--- /dev/null
+++ b/tests/libtest/lib507.c
@@ -0,0 +1,50 @@
+#include "test.h"
+
+CURLcode test(char *URL)
+{
+  CURL* curls;
+  CURLM* multi;
+  int still_running;
+  int i;
+  CURLMsg *msg;
+
+  multi = curl_multi_init();
+
+  curls=curl_easy_init();
+  curl_easy_setopt(curls, CURLOPT_URL, URL);
+  curl_multi_add_handle(multi, curls);
+
+  while ( CURLM_CALL_MULTI_PERFORM == curl_multi_perform(multi, &still_running) );
+  while(still_running) {
+    struct timeval timeout;
+    int rc;
+    fd_set fdread;
+    fd_set fdwrite;
+    fd_set fdexcep;
+    int maxfd;
+    FD_ZERO(&fdread);
+    FD_ZERO(&fdwrite);
+    FD_ZERO(&fdexcep);
+    timeout.tv_sec = 1;
+    timeout.tv_usec = 0;
+    curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
+    rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
+    switch(rc) {
+      case -1:
+        break;
+      case 0:
+      default:
+        while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(multi, &still_running));
+        break;
+    }
+  }
+  msg = curl_multi_info_read(multi, &still_running);
+  /* this should now contain a result code from the easy handle,
+     get it */
+  i = msg->data.result;
+
+  curl_multi_cleanup(multi);
+  curl_easy_cleanup(curls);
+
+  return i; /* return the final return code */
+}