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 <w.dau...@criteo.com>
---
 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;
        }
 
-- 
2.24.1


Reply via email to