Skip to content

Commit

Permalink
MinGW: Fix error: cannot convert 'size_t*' to 'int*' (squid-cache#1825)
Browse files Browse the repository at this point in the history
Removing another addrinfo as we do.
  • Loading branch information
yadij authored and kinkie committed Jun 22, 2024
1 parent e92f60e commit 0250a81
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions src/comm/TcpAcceptor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -345,16 +345,13 @@ bool
Comm::TcpAcceptor::acceptInto(Comm::ConnectionPointer &details)
{
++statCounter.syscalls.sock.accepts;
struct addrinfo *gai = nullptr;
Ip::Address::InitAddr(gai);

errcode = 0; // reset local errno copy.
const auto rawSock = accept(conn->fd, gai->ai_addr, &gai->ai_addrlen);
struct sockaddr_storage remoteAddress = {};
socklen_t remoteAddressSize = sizeof(remoteAddress);
const auto rawSock = accept(conn->fd, reinterpret_cast<struct sockaddr *>(&remoteAddress), &remoteAddressSize);
if (rawSock < 0) {
errcode = errno; // store last accept errno locally.

Ip::Address::FreeAddr(gai);

if (ignoreErrno(errcode) || errcode == ECONNABORTED) {
debugs(50, 5, status() << ": " << xstrerr(errcode));
return false;
Expand All @@ -373,21 +370,21 @@ Comm::TcpAcceptor::acceptInto(Comm::ConnectionPointer &details)
details->fd = sock;
details->enterOrphanage();

details->remote = *gai;
Assure(remoteAddressSize <= socklen_t(sizeof(remoteAddress)));
details->remote = remoteAddress;

// lookup the local-end details of this new connection
Ip::Address::InitAddr(gai);
details->local.setEmpty();
if (getsockname(sock, gai->ai_addr, &gai->ai_addrlen) != 0) {
struct sockaddr_storage localAddress = {};
socklen_t localAddressSize = sizeof(localAddress);
if (getsockname(sock, reinterpret_cast<struct sockaddr *>(&localAddress), &localAddressSize) != 0) {
int xerrno = errno;
Ip::Address::FreeAddr(gai);
debugs(50, DBG_IMPORTANT, "ERROR: Closing accepted TCP connection after failing to obtain its local IP address" <<
Debug::Extra << "accepted connection: " << details <<
Debug::Extra << "getsockname(2) error: " << xstrerr(xerrno));
return false;
}
details->local = *gai;
Ip::Address::FreeAddr(gai);
Assure(localAddressSize <= socklen_t(sizeof(localAddress)));
details->local = localAddress;

if (conn->flags & COMM_TRANSPARENT) { // the real client/dest IP address must be already available via getsockname()
details->flags |= COMM_TRANSPARENT;
Expand Down

0 comments on commit 0250a81

Please sign in to comment.