]> Kevux Git Server - rit/commitdiff
unix-socket: add backlog size option to unix_stream_listen()
authorJeff Hostetler <jeffhost@microsoft.com>
Mon, 15 Mar 2021 21:08:25 +0000 (21:08 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Mar 2021 21:32:51 +0000 (14:32 -0700)
Update `unix_stream_listen()` to take an options structure to override
default behaviors.  This commit includes the size of the `listen()` backlog.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/credential-cache--daemon.c
unix-socket.c
unix-socket.h

index c61f123..4c6c89a 100644 (file)
@@ -203,9 +203,10 @@ static int serve_cache_loop(int fd)
 
 static void serve_cache(const char *socket_path, int debug)
 {
+       struct unix_stream_listen_opts opts = UNIX_STREAM_LISTEN_OPTS_INIT;
        int fd;
 
-       fd = unix_stream_listen(socket_path);
+       fd = unix_stream_listen(socket_path, &opts);
        if (fd < 0)
                die_errno("unable to bind to '%s'", socket_path);
 
index 69f81d6..012becd 100644 (file)
@@ -1,6 +1,8 @@
 #include "cache.h"
 #include "unix-socket.h"
 
+#define DEFAULT_UNIX_STREAM_LISTEN_BACKLOG (5)
+
 static int chdir_len(const char *orig, int len)
 {
        char *path = xmemdupz(orig, len);
@@ -89,9 +91,11 @@ fail:
        return -1;
 }
 
-int unix_stream_listen(const char *path)
+int unix_stream_listen(const char *path,
+                      const struct unix_stream_listen_opts *opts)
 {
        int fd = -1, saved_errno;
+       int backlog;
        struct sockaddr_un sa;
        struct unix_sockaddr_context ctx;
 
@@ -106,7 +110,10 @@ int unix_stream_listen(const char *path)
        if (bind(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
                goto fail;
 
-       if (listen(fd, 5) < 0)
+       backlog = opts->listen_backlog_size;
+       if (backlog <= 0)
+               backlog = DEFAULT_UNIX_STREAM_LISTEN_BACKLOG;
+       if (listen(fd, backlog) < 0)
                goto fail;
 
        unix_sockaddr_cleanup(&ctx);
index e271aee..ec2fb3e 100644 (file)
@@ -1,7 +1,14 @@
 #ifndef UNIX_SOCKET_H
 #define UNIX_SOCKET_H
 
+struct unix_stream_listen_opts {
+       int listen_backlog_size;
+};
+
+#define UNIX_STREAM_LISTEN_OPTS_INIT { 0 }
+
 int unix_stream_connect(const char *path);
-int unix_stream_listen(const char *path);
+int unix_stream_listen(const char *path,
+                      const struct unix_stream_listen_opts *opts);
 
 #endif /* UNIX_SOCKET_H */