diff --git a/CHANGES b/CHANGES
index f15dca136ba368430ee3486fa868aea5a813325b..514d0cc09593e7bc5eff19e15b2104581d7c25c8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,10 @@
 
                                   Changelog
 
+Daniel (24 November 2004)
+- Andrés García fixed the configure script to detect select properly when run
+  with Msys/Mingw on Windows.
+
 Daniel (22 November 2004)
 - David Phillips enhanced test 518. I made it depend on a "feature" so that
   systems without getrlimit() won't attempt to test 518. configure now checks
diff --git a/configure.ac b/configure.ac
index 019bce231b30585cf1096d1dc365c56e132ee0ee..39264c7f88032734186c33598ae165c5cf9864a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1260,6 +1260,20 @@ dnl if not found, $ac_func is the name we check for
 
 )
 
+dnl For some reason, the check above doesn't properly detect select() with
+dnl Msys/Mingw
+if test "$ac_cv_func_select" != "yes"; then
+  AC_MSG_CHECKING([for select in ws2_32])
+  AC_TRY_LINK([#include <winsock2.h>],
+               [select(0,(fd_set *)NULL,(fd_set *)NULL,(fd_set *)NULL,(struct timeval *)NULL);],
+               [ dnl worked!
+               AC_MSG_RESULT([yes])
+               HAVE_SELECT="1"
+               AC_DEFINE_UNQUOTED(HAVE_SELECT,1)],
+               [AC_MSG_ERROR(You can't compile without a select)]
+             )
+fi
+
 dnl sigsetjmp() might be a macro and no function so if it isn't found already
 dnl we make an extra check here!
 if test "$ac_cv_func_sigsetjmp" != "yes"; then