Mercurial > libjeffpc
changeset 872:a3965185623f
socksvc: switch to the newly added xsockaddr
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 14 Feb 2024 10:01:04 -0500 |
parents | de55ae9a8839 |
children | 67a53cc79d23 |
files | socksvc.c |
diffstat | 1 files changed, 7 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/socksvc.c Wed Feb 14 09:54:10 2024 -0500 +++ b/socksvc.c Wed Feb 14 10:01:04 2024 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2017 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> + * Copyright (c) 2015-2017,2024 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -36,6 +36,7 @@ #include <jeffpc/time.h> #include <jeffpc/io.h> #include <jeffpc/mem.h> +#include <jeffpc/sock.h> #include <jeffpc/socksvc.h> /* @@ -50,11 +51,6 @@ #define MAX_SOCK_FDS 8 #define CONN_BACKLOG 64 -union sockaddr_union { - struct sockaddr_in inet; - struct sockaddr_in6 inet6; -}; - struct state { void *private; struct taskq *taskq; @@ -162,32 +158,20 @@ return -EINVAL; /* XXX: this should likely be something else */ for (p = res; p; p = p->ai_next) { - struct sockaddr_in *ipv4; - struct sockaddr_in6 *ipv6; - char str[64]; - void *addr; + char str[XSOCKADDR_STRLEN]; int ret; switch (p->ai_family) { case AF_INET: - ipv4 = (struct sockaddr_in *) p->ai_addr; - addr = &ipv4->sin_addr; - break; case AF_INET6: - ipv6 = (struct sockaddr_in6 *) p->ai_addr; - addr = &ipv6->sin6_addr; break; default: cmn_err(CE_INFO, "Unsupparted address family: %d", p->ai_family); - addr = NULL; - break; + continue; } - if (!addr) - continue; - - inet_ntop(p->ai_family, addr, str, sizeof(str)); + xsockaddr_ntop(p->ai_addr, str, sizeof(str)); ret = bind_sock(state, p->ai_family, p->ai_addr, p->ai_addrlen); if (ret && ret != -EAFNOSUPPORT) @@ -229,7 +213,7 @@ int i; for (;;) { - union sockaddr_union addr; + union xsockaddr addr; unsigned len; uint64_t select_time; uint64_t accept_time; @@ -260,7 +244,7 @@ continue; len = sizeof(addr); - fd = accept(state->fds[i], (struct sockaddr *) &addr, &len); + fd = accept(state->fds[i], &addr.sa, &len); if (fd == -1) { cmn_err(CE_INFO, "Failed to accept from fd %d: %s", state->fds[i], strerror(errno));