]> PatchyGit - patchyircd.git/commitdiff
support IPv4/v6 unconditionally
authorEgor <egor@patchysicp.xyz>
Tue, 17 May 2022 16:28:16 +0000 (19:28 +0300)
committerEgor <egor@patchysicp.xyz>
Tue, 17 May 2022 16:28:16 +0000 (19:28 +0300)
config.h
main.c

index b64f021..2e81fb9 100644 (file)
--- a/config.h
+++ b/config.h
@@ -2,8 +2,6 @@
 #define LISTENING_PORT_TLS 6697
 #define LISTENING_BACKLOG SOMAXCONN
 #define CLIENTS 30
-#define SUPPORT_IPV4
-#define SUPPORT_IPV6
 #define MAX_NICKLEN 32
 #ifndef ADMINLOC1
 #define ADMINLOC1 "Location 1"
diff --git a/main.c b/main.c
index 1a0e488..a927c66 100644 (file)
--- a/main.c
+++ b/main.c
@@ -72,14 +72,10 @@ struct client_data *clients[CLIENTS];
 fd_set readfds;
 
 
-#ifdef SUPPORT_IPV4
-       struct sockaddr_in serverAddrV4;
-       size_t serverAddrV4len;
-#endif
-#ifdef SUPPORT_IPV6
-       struct sockaddr_in6 serverAddrV6;
-       size_t serverAddrV6len;
-#endif
+struct sockaddr_in serverAddrV4;
+size_t serverAddrV4len;
+struct sockaddr_in6 serverAddrV6;
+size_t serverAddrV6len;
 FILE *fchanlog = NULL;
 
 SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len)
@@ -99,13 +95,10 @@ SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len)
                exit(EXIT_FAILURE);
        }
 #endif
-#ifdef SUPPORT_IPV6
-       // IPV6 Only
        if(af == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&opt, sizeof(opt)) == -1) {
                net_perror("ERROR SOCKET IPV6");
                exit(EXIT_FAILURE);
        }
-#endif
        // Set nonblock
        net_nonblock(sock);
        // Bind to socket
@@ -114,7 +107,7 @@ SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len)
                exit(EXIT_FAILURE);
        }
        // Listen to socket
-       if(listen(sock, SOMAXCONN) == -1) {
+       if(listen(sock, LISTENING_BACKLOG) == -1) {
                net_perror("ERROR LISTEN");
                exit(EXIT_FAILURE);
        }
@@ -196,7 +189,6 @@ int main() {
        memset(clients, 0, sizeof(clients));
 
        // Setup structs
-#ifdef SUPPORT_IPV4
        memset(&serverAddrV4, 0, sizeof(struct sockaddr_in));
        serverAddrV4.sin_addr.s_addr = INADDR_ANY;
        serverAddrV4.sin_port = htons(LISTENING_PORT);
@@ -204,17 +196,13 @@ int main() {
        serverAddrV4len = sizeof(serverAddrV4);
        listeners_tls[listener_count] = NULL;
        listeners[listener_count++] = create_listen_sock(AF_INET, (struct sockaddr*)&serverAddrV4, sizeof(struct sockaddr_in));
-#endif
-#ifdef SUPPORT_IPV6
        memset(&serverAddrV6, 0, sizeof(struct sockaddr_in6));
        serverAddrV6.sin6_addr = in6addr_any;
-       serverAddrV6.sin6_flowinfo = 0;
        serverAddrV6.sin6_port = htons(LISTENING_PORT);
        serverAddrV6.sin6_family = AF_INET6;
        serverAddrV6len = sizeof(serverAddrV6);
        listeners_tls[listener_count] = NULL;
        listeners[listener_count++] = create_listen_sock(AF_INET6, (struct sockaddr*)&serverAddrV6, sizeof(struct sockaddr_in6));
-#endif
 #ifdef HAS_TLS
        struct tls_config *tls_cfg;
        struct tls *tls_ctx;
@@ -234,16 +222,12 @@ int main() {
                return fprintf(stderr, "tls_configure: %s\n", tls_error(tls_ctx)), 1;
        tls_config_free(tls_cfg);
 
-#ifdef SUPPORT_IPV4
        serverAddrV4.sin_port = htons(LISTENING_PORT_TLS);
        listeners_tls[listener_count] = tls_ctx;
        listeners[listener_count++] = create_listen_sock(AF_INET, (struct sockaddr*)&serverAddrV4, sizeof(struct sockaddr_in));
-#endif
-#ifdef SUPPORT_IPV6
        serverAddrV6.sin6_port = htons(LISTENING_PORT_TLS);
        listeners_tls[listener_count] = tls_ctx;
        listeners[listener_count++] = create_listen_sock(AF_INET6, (struct sockaddr*)&serverAddrV6, sizeof(struct sockaddr_in6));
-#endif
 #endif
 
        FILE *f = fopen("init.txt", "rb");