Commit efad6ddc authored by Timmons C. Player's avatar Timmons C. Player

listener: use sockaddr_storage for socket addrs

New connections can come from either IPv4 or IPv6 addresses. Hence, use
a sockaddress structure that can handle both.
parent a34a2156
...@@ -107,7 +107,7 @@ namespace Pistache::Tcp ...@@ -107,7 +107,7 @@ namespace Pistache::Tcp
TransportFactory defaultTransportFactory() const; TransportFactory defaultTransportFactory() const;
void handleNewConnection(); void handleNewConnection();
int acceptConnection(struct sockaddr_in& peer_addr) const; int acceptConnection(struct sockaddr_storage& peer_addr) const;
void dispatchPeer(const std::shared_ptr<Peer>& peer); void dispatchPeer(const std::shared_ptr<Peer>& peer);
bool useSSL_ = false; bool useSSL_ = false;
......
...@@ -442,7 +442,7 @@ namespace Pistache::Tcp ...@@ -442,7 +442,7 @@ namespace Pistache::Tcp
void Listener::handleNewConnection() void Listener::handleNewConnection()
{ {
struct sockaddr_in peer_addr; struct sockaddr_storage peer_addr;
int client_fd = acceptConnection(peer_addr); int client_fd = acceptConnection(peer_addr);
void* ssl = nullptr; void* ssl = nullptr;
...@@ -479,19 +479,20 @@ namespace Pistache::Tcp ...@@ -479,19 +479,20 @@ namespace Pistache::Tcp
make_non_blocking(client_fd); make_non_blocking(client_fd);
std::shared_ptr<Peer> peer; std::shared_ptr<Peer> peer;
auto* peer_alias = reinterpret_cast<struct sockaddr*>(&peer_addr);
if (this->useSSL_) if (this->useSSL_)
{ {
peer = Peer::CreateSSL(client_fd, Address::fromUnix(&peer_addr), ssl); peer = Peer::CreateSSL(client_fd, Address::fromUnix(peer_alias), ssl);
} }
else else
{ {
peer = Peer::Create(client_fd, Address::fromUnix(&peer_addr)); peer = Peer::Create(client_fd, Address::fromUnix(peer_alias));
} }
dispatchPeer(peer); dispatchPeer(peer);
} }
int Listener::acceptConnection(struct sockaddr_in& peer_addr) const int Listener::acceptConnection(struct sockaddr_storage& peer_addr) const
{ {
socklen_t peer_addr_len = sizeof(peer_addr); socklen_t peer_addr_len = sizeof(peer_addr);
// Do not share open FD with forked processes // Do not share open FD with forked processes
......
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