summaryrefslogtreecommitdiff
path: root/unix-socket.c
diff options
context:
space:
mode:
authorJeff Hostetler <jeffhost@microsoft.com>2021-03-15 21:08:25 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-03-15 21:32:51 (GMT)
commit55144ccb0ac48bd2db0b907a8e8123b2befe83d1 (patch)
tree26f202024706ff1ff2c6fcfa3a3dd82a11193250 /unix-socket.c
parent4f98ce586542a9fc1a2f4b5633dc7edc8922fa8f (diff)
downloadgit-55144ccb0ac48bd2db0b907a8e8123b2befe83d1.zip
git-55144ccb0ac48bd2db0b907a8e8123b2befe83d1.tar.gz
git-55144ccb0ac48bd2db0b907a8e8123b2befe83d1.tar.bz2
unix-socket: add backlog size option to unix_stream_listen()
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>
Diffstat (limited to 'unix-socket.c')
-rw-r--r--unix-socket.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/unix-socket.c b/unix-socket.c
index 69f81d6..012becd 100644
--- a/unix-socket.c
+++ b/unix-socket.c
@@ -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);