diff options
author | defanor <defanor@uberspace.net> | 2021-10-03 12:35:10 +0300 |
---|---|---|
committer | defanor <defanor@uberspace.net> | 2021-10-03 12:35:10 +0300 |
commit | f8a1ef1b37d8a6cf699f99c1bf6150eccd8c96d1 (patch) | |
tree | 87bab0078cab26d67c2ab4b25630124194b4ac71 | |
parent | 804fe06083770b89ebcee85614ec52b30c251d87 (diff) |
Fix IPv6 address handling
-rw-r--r-- | src/rexmpp_tcp.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/rexmpp_tcp.c b/src/rexmpp_tcp.c index a4d5018..13e6e81 100644 --- a/src/rexmpp_tcp.c +++ b/src/rexmpp_tcp.c @@ -143,10 +143,12 @@ rexmpp_tcp_conn_init (rexmpp_t *s, conn->connection_attempts++; return REXMPP_CONN_IN_PROGRESS; } - struct sockaddr_in addr_v6; + struct sockaddr_in6 addr_v6; if (inet_pton(AF_INET6, host, &addr_v6)) { - addr_v6.sin_family = AF_INET6; - addr_v6.sin_port = htons(port); + addr_v6.sin6_family = AF_INET6; + addr_v6.sin6_port = htons(port); + addr_v6.sin6_flowinfo = 0; + addr_v6.sin6_scope_id = 0; conn->sockets[conn->connection_attempts] = socket(AF_INET6, SOCK_STREAM, 0); flags = fcntl(conn->sockets[conn->connection_attempts], F_GETFL, 0); @@ -272,6 +274,8 @@ rexmpp_tcp_conn_proceed (rexmpp_t *s, len); addr_v6.sin6_family = AF_INET6; addr_v6.sin6_port = htons(conn->port); + addr_v6.sin6_flowinfo = 0; + addr_v6.sin6_scope_id = 0; domain = AF_INET6; addr = (struct sockaddr*)&addr_v6; addrlen = sizeof(addr_v6); |