diff --git a/src/main.cpp b/src/main.cpp index d8b90a7..63df75f 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 = {}; @@ -163,7 +172,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 +183,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 = {};