From 9a8ef7f51d2b5a21081f552780207130cfd6a7d5 Mon Sep 17 00:00:00 2001 From: William Dauchy Date: Mon, 13 Jan 2020 17:52:49 +0100 Subject: [PATCH] CLEANUP: ssl: remove opendir call in ssl_sock_load_cert Since commit 3180f7b55434 ("MINOR: ssl: load certificates in alphabetical order"), `readdir` was replaced by `scandir`. We can indeed replace it with a check on the previous `stat` call. This micro cleanup can be a good benefit when you have hundreds of bind lines which open TLS certificates directories in terms of syscall, especially in a case of frequent reloads. Signed-off-by: William Dauchy --- src/ssl_sock.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 124b2c602..ff8af2395 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -4249,7 +4249,6 @@ int ssl_sock_load_cert(char *path, struct bind_conf *bind_conf, char **err) { struct dirent **de_list; int i, n; - DIR *dir; struct stat buf; char *end; char fp[MAXPATHLEN+1]; @@ -4265,8 +4264,7 @@ int ssl_sock_load_cert(char *path, struct bind_conf *bind_conf, char **err) } if (stat(path, &buf) == 0) { - dir = opendir(path); - if (!dir) { + if (S_ISDIR(buf.st_mode) == 0) { ckchs = ckchs_load_cert_file(path, 0, err); if (!ckchs) return ERR_ALERT | ERR_FATAL; @@ -4355,7 +4353,6 @@ ignore_entry: } free(de_list); } - closedir(dir); return cfgerr; }