varlink: port varlink code over to use getdtablesize() for sizing number of concurrent connections
Use the official glibc API for determining this parameter. In most other cases in our tree it's better to go directly for RLIMIT_NOFILE since it's semantically what we want, but for this case it appears more appropriate to use the friendlier, shorter, explicit API.
This commit is contained in:
parent
a0c41de277
commit
88a36d3690
|
@ -2406,17 +2406,18 @@ int varlink_server_bind_connect(VarlinkServer *s, VarlinkConnect callback) {
|
|||
}
|
||||
|
||||
unsigned varlink_server_connections_max(VarlinkServer *s) {
|
||||
struct rlimit rl;
|
||||
int dts;
|
||||
|
||||
/* If a server is specified, return the setting for that server, otherwise the default value */
|
||||
if (s)
|
||||
return s->connections_max;
|
||||
|
||||
assert_se(getrlimit(RLIMIT_NOFILE, &rl) >= 0);
|
||||
dts = getdtablesize();
|
||||
assert_se(dts > 0);
|
||||
|
||||
/* Make sure we never use up more than ¾th of RLIMIT_NOFILE for IPC */
|
||||
if (VARLINK_DEFAULT_CONNECTIONS_MAX > rl.rlim_cur / 4 * 3)
|
||||
return rl.rlim_cur / 4 * 3;
|
||||
if (VARLINK_DEFAULT_CONNECTIONS_MAX > (unsigned) dts / 4 * 3)
|
||||
return dts / 4 * 3;
|
||||
|
||||
return VARLINK_DEFAULT_CONNECTIONS_MAX;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue