commit 90f4046de07129f148c3923410b0258b5b03c4d4
parent 6cf9fb3719c5d5486ec966807fa6ad6d3c10ef7a
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Tue, 8 Dec 2015 10:59:54 +0000
Use real system default value of FD_SETSIZE instead of guessing
Diffstat:
5 files changed, 42 insertions(+), 39 deletions(-)
diff --git a/src/include/platform.h b/src/include/platform.h
@@ -63,24 +63,14 @@
/* Some platforms (FreeBSD, Solaris, W32) allow to override
default FD_SETSIZE by defining it before including
headers. */
-#if defined(_WIN32) && !defined(__CYGWIN__)
-/* Default FD_SETSIZE value for WinSock */
-#define MHD_SYS_DEFAULT_FD_SETSIZE 64
-#elif defined(__sun) && defined(_LP64)
-/* Default FD_SETSIZE value for 64bit Solaris since version 7
- and SunOS since version 2.7 */
-#define MHD_SYS_DEFAULT_FD_SETSIZE 65536
-#else /* all other platforms */
-/* Default FD_SETSIZE value for most platforms */
-#define MHD_SYS_DEFAULT_FD_SETSIZE 1024
-#endif /* all other platforms */
+#define _MHD_SYS_DEFAULT_FD_SETSIZE get_system_fdsetsize_value()
#elif defined(_WIN32) && !defined(__CYGWIN__)
/* Platform with WinSock and without overridden FD_SETSIZE */
#define FD_SETSIZE 2048 /* Override default small value */
-#define MHD_SYS_DEFAULT_FD_SETSIZE 64
-#else
-/* Use system default value */
-#define MHD_SYS_DEFAULT_FD_SETSIZE FD_SETSIZE
+#define _MHD_SYS_DEFAULT_FD_SETSIZE get_system_fdsetsize_value()
+#else /* !FD_SETSIZE && !WinSock*/
+#define _MHD_SYS_DEFAULT_FD_SETSIZE FD_SETSIZE
+#define _MHD_FD_SETSIZE_IS_DEFAULT 1
#endif /* FD_SETSIZE */
#define _XOPEN_SOURCE_EXTENDED 1
diff --git a/src/microhttpd/Makefile.am b/src/microhttpd/Makefile.am
@@ -64,6 +64,7 @@ libmicrohttpd_la_SOURCES = \
memorypool.c memorypool.h \
mhd_mono_clock.c mhd_mono_clock.h \
mhd_limits.h mhd_byteorder.h \
+ sysfdsetsize.c sysfdsetsize.h \
response.c response.h
libmicrohttpd_la_CPPFLAGS = \
$(AM_CPPFLAGS) $(MHD_LIB_CPPFLAGS) \
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
@@ -52,6 +52,10 @@
#include <sys/sendfile.h>
#endif
+#ifndef _MHD_FD_SETSIZE_IS_DEFAULT
+#include "sysfdsetsize.h"
+#endif /* !_MHD_FD_SETSIZE_IS_DEFAULT */
+
#ifdef _WIN32
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
@@ -677,7 +681,7 @@ MHD_get_fdset (struct MHD_Daemon *daemon,
{
return MHD_get_fdset2(daemon, read_fd_set,
write_fd_set, except_fd_set,
- max_fd, MHD_SYS_DEFAULT_FD_SETSIZE);
+ max_fd, _MHD_SYS_DEFAULT_FD_SETSIZE);
}
/**
diff --git a/w32/common/libmicrohttpd-files.vcxproj b/w32/common/libmicrohttpd-files.vcxproj
@@ -14,6 +14,7 @@
<ClCompile Include="$(MhdSrc)microhttpd\reason_phrase.c" />
<ClCompile Include="$(MhdSrc)microhttpd\response.c" />
<ClCompile Include="$(MhdSrc)microhttpd\tsearch.c" />
+ <ClCompile Include="$(MhdSrc)microhttpd\sysfdsetsize.c" />
<ClCompile Include="$(MhdSrc)platform\w32functions.c" />
</ItemGroup>
<ItemGroup>
@@ -32,6 +33,7 @@
<ClInclude Include="$(MhdSrc)microhttpd\mhd_mono_clock.h" />
<ClInclude Include="$(MhdSrc)microhttpd\response.h" />
<ClInclude Include="$(MhdSrc)microhttpd\tsearch.h" />
+ <ClInclude Include="$(MhdSrc)microhttpd\sysfdsetsize.h" />
<ClInclude Include="$(MhdW32Common)MHD_config.h" />
</ItemGroup>
<ItemGroup>
diff --git a/w32/common/libmicrohttpd-filters.vcxproj b/w32/common/libmicrohttpd-filters.vcxproj
@@ -23,6 +23,29 @@
</Filter>
</ItemGroup>
<ItemGroup>
+ <ClInclude Include="$(MhdSrc)include\autoinit_funcs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(MhdSrc)include\microhttpd.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(MhdSrc)include\platform.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(MhdSrc)include\platform_interface.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(MhdSrc)include\w32functions.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="$(MhdW32Common)MHD_config.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClCompile Include="$(MhdSrc)platform\w32functions.c">
+ <Filter>Source Files\platform_interface</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
<ClCompile Include="$(MhdSrc)microhttpd\base64.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -56,17 +79,12 @@
<ClCompile Include="$(MhdSrc)microhttpd\response.c">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="$(MhdSrc)platform\w32functions.c">
- <Filter>Source Files\platform_interface</Filter>
- </ClCompile>
<ClCompile Include="$(MhdSrc)microhttpd\tsearch.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="$(MhdSrc)microhttpd\mhd_mono_clock.c">
<Filter>Source Files</Filter>
</ClCompile>
- </ItemGroup>
- <ItemGroup>
<ClInclude Include="$(MhdSrc)microhttpd\base64.h">
<Filter>Source Files</Filter>
</ClInclude>
@@ -85,27 +103,9 @@
<ClInclude Include="$(MhdSrc)microhttpd\response.h">
<Filter>Source Files</Filter>
</ClInclude>
- <ClInclude Include="$(MhdSrc)include\microhttpd.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(MhdSrc)include\platform.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(MhdSrc)include\platform_interface.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(MhdSrc)include\w32functions.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="$(MhdW32Common)MHD_config.h">
- <Filter>Header Files</Filter>
- </ClInclude>
<ClInclude Include="$(MhdSrc)microhttpd\tsearch.h">
<Filter>Source Files</Filter>
</ClInclude>
- <ClInclude Include="$(MhdSrc)include\autoinit_funcs.h">
- <Filter>Header Files</Filter>
- </ClInclude>
<ClInclude Include="$(MhdSrc)microhttpd\mhd_limits.h">
<Filter>Source Files</Filter>
</ClInclude>
@@ -115,6 +115,12 @@
<ClInclude Include="$(MhdSrc)microhttpd\mhd_mono_clock.h">
<Filter>Source Files</Filter>
</ClInclude>
+ <ClInclude Include="$(MhdSrc)microhttpd\sysfdsetsize.h">
+ <Filter>Source Files</Filter>
+ </ClInclude>
+ <ClCompile Include="$(MhdSrc)microhttpd\sysfdsetsize.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="$(MhdW32Common)microhttpd_dll_res_vc.rc">