diff --git a/src/main.cpp b/src/main.cpp index d8b90a7..08b48f4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -102,6 +102,15 @@ void serialize_addrinfo(struct addrinfo* in) { #define PORT "8000" +void *get_in_addr(struct sockaddr *sa) +{ + if (sa->sa_family == AF_INET) { + return &(((struct sockaddr_in*)sa)->sin_addr); + } + + return &(((struct sockaddr_in6*)sa)->sin6_addr); +} + void run_server() { struct addrinfo *servinfo = {}; struct addrinfo hints = {}; @@ -114,7 +123,6 @@ void run_server() { panicf("getaddrinfo failed, error code: %s\n", gai_strerrorA(err)); } defer { freeaddrinfo(servinfo); }; - // serialize_addrinfo(servinfo); SOCKET socket_fd = -1; for (addrinfo *it = servinfo; it; it = it->ai_next) { @@ -163,7 +171,7 @@ void run_server() { // @todo: this might be a little wrong, also the win32 and unix seem to differ on field names in sockaddr char s[INET6_ADDRSTRLEN]; sockaddr *n = (sockaddr *)&their_addr; - inet_ntop(their_addr.ss_family, n->sa_data, s, sizeof(s)); + inet_ntop(their_addr.ss_family, get_in_addr((struct sockaddr *)&their_addr), s, sizeof(s)); debugf("server: got connection from: %s", s); const char *msg = "Hello world"; @@ -174,14 +182,7 @@ void run_server() { } } -void *get_in_addr(struct sockaddr *sa) -{ - if (sa->sa_family == AF_INET) { - return &(((struct sockaddr_in*)sa)->sin_addr); - } - return &(((struct sockaddr_in6*)sa)->sin6_addr); -} void run_client() { struct addrinfo *servinfo = {};