]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Don't assert on failed getrlimit call to allow called to handle this gracefully as...
authorOndřej Surý <ondrej@sury.org>
Sat, 13 Oct 2018 10:10:43 +0000 (12:10 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 8 Nov 2018 05:21:53 +0000 (12:21 +0700)
bin/named/main.c
lib/isc/unix/resource.c

index 1ff7e139e3e0a93a3b8db7700d050e2ce63f1d99..7b22e9e08d1a503ef2fdf749be8e32c287947181 100644 (file)
@@ -1068,14 +1068,18 @@ setup(void) {
        /*
         * Get the initial resource limits.
         */
-       (void)isc_resource_getlimit(isc_resource_stacksize,
-                                   &named_g_initstacksize);
-       (void)isc_resource_getlimit(isc_resource_datasize,
-                                   &named_g_initdatasize);
-       (void)isc_resource_getlimit(isc_resource_coresize,
-                                   &named_g_initcoresize);
-       (void)isc_resource_getlimit(isc_resource_openfiles,
-                                   &named_g_initopenfiles);
+       RUNTIME_CHECK(isc_resource_getlimit(isc_resource_stacksize,
+                                           &named_g_initstacksize)
+                     == ISC_R_SUCCESS);
+       RUNTIME_CHECK(isc_resource_getlimit(isc_resource_datasize,
+                                           &named_g_initdatasize)
+                     == ISC_R_SUCCESS);
+       RUNTIME_CHECK(isc_resource_getlimit(isc_resource_coresize,
+                                           &named_g_initcoresize)
+                     == ISC_R_SUCCESS);
+       RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
+                                           &named_g_initopenfiles)
+                     == ISC_R_SUCCESS);
 
        /*
         * System resources cannot effectively be tuned on some systems.
@@ -1083,8 +1087,9 @@ setup(void) {
         */
        old_openfiles = named_g_initopenfiles;
        named_os_adjustnofile();
-       (void)isc_resource_getlimit(isc_resource_openfiles,
-                                   &named_g_initopenfiles);
+       RUNTIME_CHECK(isc_resource_getlimit(isc_resource_openfiles,
+                                           &named_g_initopenfiles)
+                     == ISC_R_SUCCESS);
        if (old_openfiles != named_g_initopenfiles) {
                isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
                              NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
index 99eab54184870fc25f3de8018c8cead571144219..b3567ef9c0f002b5f80f7a19351331ddc16e064f 100644 (file)
@@ -180,34 +180,38 @@ isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) {
 
 isc_result_t
 isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
-       int unixresult;
        int unixresource;
        struct rlimit rl;
        isc_result_t result;
 
        result = resource2rlim(resource, &unixresource);
-       if (result == ISC_R_SUCCESS) {
-               unixresult = getrlimit(unixresource, &rl);
-               INSIST(unixresult == 0);
-               *value = rl.rlim_max;
+       if (result != ISC_R_SUCCESS) {
+               return (result);
        }
 
-       return (result);
+       if (getrlimit(unixresource, &rl) != 0) {
+               return (isc__errno2result(errno));
+       }
+
+       *value = rl.rlim_max;
+       return (ISC_R_SUCCESS);
 }
 
 isc_result_t
 isc_resource_getcurlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
-       int unixresult;
        int unixresource;
        struct rlimit rl;
        isc_result_t result;
 
        result = resource2rlim(resource, &unixresource);
-       if (result == ISC_R_SUCCESS) {
-               unixresult = getrlimit(unixresource, &rl);
-               INSIST(unixresult == 0);
-               *value = rl.rlim_cur;
+       if (result != ISC_R_SUCCESS) {
+               return (result);
        }
 
-       return (result);
+       if (getrlimit(unixresource, &rl) != 0) {
+               return (isc__errno2result(errno));
+       }
+
+       *value = rl.rlim_cur;
+       return (ISC_R_SUCCESS);
 }