Skip to content

Commit

Permalink
Merge pull request #435 from dfr/freebsd-console-buffers
Browse files Browse the repository at this point in the history
ensure console socket buffers are properly sized
  • Loading branch information
rhatdan authored Jul 11, 2023
2 parents 2902909 + fa67ce6 commit 75f8ceb
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/conn_sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ static void bind_relative_to_dir(int dir_fd, int sock_fd, const char *path)
if (bind(sock_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
pexit("Failed to bind to console-socket");
}

static void set_socket_buffers(G_GNUC_UNUSED int fd)
{
/*
* Nothing needed here for Linux - the default buffer sizes for unix domain sockets are large enough.
*/
}

#endif

#ifdef __FreeBSD__
Expand All @@ -135,6 +143,18 @@ static void bind_relative_to_dir(int dir_fd, int sock_fd, const char *path)
if (fchmodat(dir_fd, addr.sun_path, 0700, AT_SYMLINK_NOFOLLOW))
pexit("Failed to change console-socket permissions");
}

static void set_socket_buffers(int fd)
{
int sz = CONN_SOCK_BUF_SIZE;
if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &sz, sizeof(sz))) {
nwarn("failed to set socket receive buffer size");
}
if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sz, sizeof(sz))) {
nwarn("failed to set socket send buffer size");
}
}

#endif

static char *setup_socket(int *fd, const char *path)
Expand Down Expand Up @@ -357,6 +377,7 @@ static gboolean attach_cb(int fd, G_GNUC_UNUSED GIOCondition condition, gpointer
nwarn("Failed to accept client connection on attach socket");
} else {
struct remote_sock_s *remote_sock;
set_socket_buffers(new_fd);
if (srcsock->dest->readers == NULL) {
srcsock->dest->readers = g_ptr_array_new_with_free_func(free);
}
Expand Down

0 comments on commit 75f8ceb

Please sign in to comment.