]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2404. [port] hpux: files unlimited support.
authorMark Andrews <marka@isc.org>
Mon, 28 Jul 2008 22:44:46 +0000 (22:44 +0000)
committerMark Andrews <marka@isc.org>
Mon, 28 Jul 2008 22:44:46 +0000 (22:44 +0000)
CHANGES
lib/isc/unix/resource.c

diff --git a/CHANGES b/CHANGES
index f986a2d052b2730ceb2f6fde3bbcaffa7a1205bb..627dcaaabbbe27c62f19631dd0915e3742cfb6d7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+2404.  [port]          hpux: files unlimited support.
+
+2403.  [bug]           TSIG context leak. [RT #18341]
+
 2402.  [port]          Support Solaris 2.11 and over. [RT #18362]
 
 2401.  [bug]           Expect to get E[MN]FILE errno internal_accept()
index 59792bdd226be5b092d54335c90b6b6c42e5ec47..0264976f8816c919d27227f5c2ff79a5c0e0763c 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: resource.c,v 1.12.944.3 2008/07/23 23:48:17 tbox Exp $ */
+/* $Id: resource.c,v 1.12.944.4 2008/07/28 22:44:46 marka Exp $ */
 
 #include <config.h>
 
 #include <linux/fs.h>  /* To get the large NR_OPEN. */
 #endif
 
+#ifdef __hpux
+#include <sys/dyntune.h>
+#endif
+
 #include "errno2result.h"
 
 static isc_result_t
@@ -211,8 +215,25 @@ isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) {
                if (unixresult == 0)
                        return (ISC_R_SUCCESS);
        }
+#elif defined(__hpux)
+       if (resource == isc_resource_openfiles && rlim_value == RLIM_INFINITY) {
+               uint64_t maxfiles;
+               if (gettune("maxfiles_lim", &maxfiles) == 0) {
+                       rl.rlim_cur = rl.rlim_max = maxfiles;
+                       unixresult = setrlimit(unixresource, &rl);
+                       if (unixresult == 0)
+                               return (ISC_R_SUCCESS);
+               }
+       }
 #endif
-
+       if (resource == isc_resource_openfiles && rlim_value == RLIM_INFINITY) {
+               if (getrlimit(unixresource, &rl) == 0) {
+                       rl.rlim_cur = rl.rlim_max;
+                       unixresult = setrlimit(unixresource, &rl);
+                       if (unixresult == 0)
+                               return (ISC_R_SUCCESS);
+               }
+       }
        return (isc__errno2result(errno));
 }