X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Fsocket-util.c;fp=src%2Fbasic%2Fsocket-util.c;h=151586479bc0219f6c500c8126c0f34175ff4620;hb=9151b5886c833a533ccad0f05bfe76af33ab67a8;hp=1d43a48aea88d4980154b79b6e0c3ccd03cd63b0;hpb=3fe1519ec24bf096c8389fa66352d97d7d269e12;p=elogind.git diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 1d43a48ae..151586479 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -481,7 +481,7 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) { return socket_address_equal(a, &b); } -int sockaddr_port(const struct sockaddr *_sa) { +int sockaddr_port(const struct sockaddr *_sa, unsigned *port) { union sockaddr_union *sa = (union sockaddr_union*) _sa; assert(sa); @@ -489,7 +489,8 @@ int sockaddr_port(const struct sockaddr *_sa) { if (!IN_SET(sa->sa.sa_family, AF_INET, AF_INET6)) return -EAFNOSUPPORT; - return be16toh(sa->sa.sa_family == AF_INET6 ? sa->in6.sin6_port : sa->in.sin_port); + *port = be16toh(sa->sa.sa_family == AF_INET6 ? sa->in6.sin6_port : sa->in.sin_port); + return 0; } int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, bool include_port, char **ret) {