From e2e138a801a7fa9d31ef24ea5e8b15af07d147cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Sat, 13 Oct 2018 12:10:43 +0200 Subject: [PATCH] Don't assert on failed getrlimit call to allow called to handle this gracefully as it already does, just abort where we need to know the numbers --- bin/named/main.c | 25 +++++++++++++++---------- lib/isc/unix/resource.c | 28 ++++++++++++++++------------ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/bin/named/main.c b/bin/named/main.c index 1ff7e139e3..7b22e9e08d 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -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, diff --git a/lib/isc/unix/resource.c b/lib/isc/unix/resource.c index 99eab54184..b3567ef9c0 100644 --- a/lib/isc/unix/resource.c +++ b/lib/isc/unix/resource.c @@ -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); }