Commit 0951aaa3 authored by Joseph Noir's avatar Joseph Noir

Fix sockaddr storage creation for new scribes

parent cd1fc630
...@@ -871,14 +871,31 @@ default_multiplexer::add_dgram_scribe(abstract_broker* self, native_socket fd, ...@@ -871,14 +871,31 @@ default_multiplexer::add_dgram_scribe(abstract_broker* self, native_socket fd,
CAF_LOG_INFO("no such host"); CAF_LOG_INFO("no such host");
return make_error(sec::cannot_connect_to_node, "no such host", host, port); return make_error(sec::cannot_connect_to_node, "no such host", host, port);
} }
sockaddr_storage tmp_addr; sockaddr_storage sa;
auto* const_addr size_t sa_len = 0;
= reinterpret_cast<const sockaddr_storage*>( memset(&sa, 0, sizeof(sockaddr_storage));
reinterpret_cast<const addrinfo*>(res->first.c_str())->ai_addr); switch (res->second) {
size_t sockaddr_len = (const_addr->ss_family == AF_INET) ? case ipv4: {
sizeof(sockaddr_in) : sizeof(sockaddr_in6); auto* sa_v4 = reinterpret_cast<sockaddr_in*>(&sa);
tmp_addr = *const_addr; inet_pton(AF_INET, host.c_str(), &sa_v4->sin_addr);
return add_dgram_scribe(self, fd, tmp_addr, sockaddr_len, true); sa_v4->sin_port = htons(port);
sa_v4->sin_family = AF_INET;
sa_len = sizeof(sockaddr_in);
break;
}
case ipv6: {
auto* sa_v6 = reinterpret_cast<sockaddr_in6*>(&sa);
inet_pton(AF_INET, host.c_str(), &sa_v6->sin6_addr);
sa_v6->sin6_port = htons(port);
sa_v6->sin6_family = AF_INET;
sa_len = sizeof(sockaddr_in6);
break;
}
default:
return make_error(sec::cannot_connect_to_node, "unknown family",
host, port);
}
return add_dgram_scribe(self, fd, sa, sa_len, true);
} }
dgram_scribe_handle dgram_scribe_handle
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment