mirror of
https://github.com/zeek/zeek.git
synced 2025-10-06 08:38:20 +00:00
Fix strict-aliasing warning in RemoteSerializer.cc (fixes #834).
This commit is contained in:
parent
94f0bf2157
commit
a651185ff9
1 changed files with 16 additions and 11 deletions
|
@ -4208,32 +4208,37 @@ bool SocketComm::Listen()
|
||||||
|
|
||||||
bool SocketComm::AcceptConnection(int fd)
|
bool SocketComm::AcceptConnection(int fd)
|
||||||
{
|
{
|
||||||
sockaddr_storage client;
|
union {
|
||||||
socklen_t len = sizeof(client);
|
sockaddr_storage ss;
|
||||||
|
sockaddr_in s4;
|
||||||
|
sockaddr_in6 s6;
|
||||||
|
} client;
|
||||||
|
socklen_t len = sizeof(client.ss);
|
||||||
|
|
||||||
int clientfd = accept(fd, (sockaddr*) &client, &len);
|
int clientfd = accept(fd, (sockaddr*) &client.ss, &len);
|
||||||
if ( clientfd < 0 )
|
if ( clientfd < 0 )
|
||||||
{
|
{
|
||||||
Error(fmt("accept failed, %s %d", strerror(errno), errno));
|
Error(fmt("accept failed, %s %d", strerror(errno), errno));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( client.ss_family != AF_INET && client.ss_family != AF_INET6 )
|
if ( client.ss.ss_family != AF_INET && client.ss.ss_family != AF_INET6 )
|
||||||
{
|
{
|
||||||
Error(fmt("accept fail, unknown address family %d", client.ss_family));
|
Error(fmt("accept fail, unknown address family %d",
|
||||||
|
client.ss.ss_family));
|
||||||
close(clientfd);
|
close(clientfd);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Peer* peer = new Peer;
|
Peer* peer = new Peer;
|
||||||
peer->id = id_counter++;
|
peer->id = id_counter++;
|
||||||
peer->ip = client.ss_family == AF_INET ?
|
peer->ip = client.ss.ss_family == AF_INET ?
|
||||||
IPAddr(((sockaddr_in*)&client)->sin_addr) :
|
IPAddr(client.s4.sin_addr) :
|
||||||
IPAddr(((sockaddr_in6*)&client)->sin6_addr);
|
IPAddr(client.s6.sin6_addr);
|
||||||
|
|
||||||
peer->port = client.ss_family == AF_INET ?
|
peer->port = client.ss.ss_family == AF_INET ?
|
||||||
ntohs(((sockaddr_in*)&client)->sin_port) :
|
ntohs(client.s4.sin_port) :
|
||||||
ntohs(((sockaddr_in6*)&client)->sin6_port);
|
ntohs(client.s6.sin6_port);
|
||||||
|
|
||||||
peer->connected = true;
|
peer->connected = true;
|
||||||
peer->ssl = listen_ssl;
|
peer->ssl = listen_ssl;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue