From 339335189bf141aa473ff3500a51abd0a41793ce Mon Sep 17 00:00:00 2001 From: Danny Mayer Date: Fri, 26 Oct 2001 01:25:29 +0000 Subject: [PATCH] Added support for max open files for Win32 --- lib/isc/win32/resource.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/isc/win32/resource.c b/lib/isc/win32/resource.c index 66c631303b..7875de6d05 100644 --- a/lib/isc/win32/resource.c +++ b/lib/isc/win32/resource.c @@ -15,10 +15,12 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resource.c,v 1.2 2001/07/06 19:40:33 gson Exp $ */ +/* $Id: resource.c,v 1.3 2001/10/26 01:25:29 mayer Exp $ */ #include +#include + #include #include #include @@ -26,13 +28,40 @@ #include "errno2result.h" +/* + * Windows limits the maximum number of open files to 2048 + */ + +#define RLIMIT_NOFILE 2048 + isc_result_t isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) { + isc_resourcevalue_t rlim_value; + int wresult; + + if (resource != isc_resource_openfiles) return (ISC_R_NOTIMPLEMENTED); + + if (value == ISC_RESOURCE_UNLIMITED) + rlim_value = RLIMIT_NOFILE; + else + rlim_value = min(value, RLIMIT_NOFILE); + + wresult = _setmaxstdio((int) rlim_value); + + if (wresult > 0) + return (ISC_R_SUCCESS); + else + return (isc__errno2result(errno)); } isc_result_t isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) { + + if (resource != isc_resource_openfiles) return (ISC_R_NOTIMPLEMENTED); + + *value = RLIMIT_NOFILE; + return (ISC_R_SUCCESS); }