diff options
| author | frosty <frosty@illegalfirearms.store> | 2026-01-08 11:12:48 -0500 |
|---|---|---|
| committer | frosty <frosty@illegalfirearms.store> | 2026-01-08 11:12:48 -0500 |
| commit | a08ffaa472fc8a404a812ed3f3b5b5d3185ae960 (patch) | |
| tree | 233c783ac163b9edd5b920c43da7379dd41f006c /src | |
| parent | 037fdae3fa3d9ec6795a6a65a17032232ce92f52 (diff) | |
Improved FreeBSD Support
Diffstat (limited to 'src')
| -rw-r--r-- | src/server.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/server.c b/src/server.c index e6a460a..1176a66 100644 --- a/src/server.c +++ b/src/server.c @@ -5,26 +5,35 @@ #include <stdbool.h> #include <stdio.h> #include <string.h> +#include <sys/types.h> #include <sys/socket.h> #include <unistd.h> static int initialize_server_socket(const char *ip, int port, int *server_fd_out, struct sockaddr_in *address_out) { - if ((*server_fd_out = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + if ((*server_fd_out = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket failed"); fprintf(stderr, "[ERROR] initialize_server_socket: Failed to create socket.\n"); return -1; } int opt = 1; - if (setsockopt(*server_fd_out, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, - sizeof(opt))) { - perror("setsockopt failed"); - fprintf(stderr, "[ERROR] initialize_server_socket: Failed to set socket options.\n"); + + if (setsockopt(*server_fd_out, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { + perror("setsockopt SO_REUSEADDR failed"); + } + + //Needed for FreeBSD Support + #ifdef SO_REUSEPORT + if (setsockopt(*server_fd_out, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt))) { + perror("setsockopt SO_REUSEPORT failed"); + fprintf(stderr, "[ERROR] initialize_server_socket: Failed to set SO_REUSEPORT.\n"); close(*server_fd_out); return -1; } + #endif + address_out->sin_family = AF_INET; address_out->sin_addr.s_addr = inet_addr(ip); @@ -178,4 +187,4 @@ int beaker_run(const char *ip, int port) { close(server_fd); return 0; -}
\ No newline at end of file +} |
