From: Amos Jeffries Date: Thu, 2 Jun 2011 13:05:12 +0000 (+1200) Subject: Optimization: revert WCCP setup to using sockaddr_in X-Git-Tag: take08~55^2~153 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=306bfbb2d6ad357bd0540adc4ca8c8f0eb07a418;p=thirdparty%2Fsquid.git Optimization: revert WCCP setup to using sockaddr_in Replaces a some malloc/free with local stack variables and a memset --- diff --git a/src/wccp.cc b/src/wccp.cc index fdad1a0a82..0c6d36b5f6 100644 --- a/src/wccp.cc +++ b/src/wccp.cc @@ -130,7 +130,6 @@ wccpInit(void) void wccpConnectionOpen(void) { - struct addrinfo *router = NULL, *local = NULL; debugs(80, 5, "wccpConnectionOpen: Called"); if (Config.Wccp.router.IsAnyAddr()) { @@ -164,21 +163,21 @@ wccpConnectionOpen(void) debugs(80, 1, "Accepting WCCPv1 messages on " << Config.Wccp.address << ", FD " << theWccpConnection << "."); - Config.Wccp.router.GetAddrInfo(router,AF_INET); - if (connect(theWccpConnection, router->ai_addr, router->ai_addrlen)) - fatal("Unable to connect WCCP out socket"); - - Config.Wccp.router.FreeAddrInfo(router); + // Sadly WCCP only does IPv4 - Config.Wccp.address.InitAddrInfo(local); + struct sockaddr_in router; + Config.Wccp.router.GetSockAddr(router); + if (connect(theWccpConnection, &router, sizeof(router))) + fatal("Unable to connect WCCP out socket"); - if (getsockname(theWccpConnection, local->ai_addr, &local->ai_addrlen)) + struct sockaddr_in local; + memset(&local, '\0', sizeof(local)); + socklen_t slen = sizeof(local); + if (getsockname(theWccpConnection, &local, &slen)) fatal("Unable to getsockname on WCCP out socket"); - local_ip = *local; - - Config.Wccp.address.FreeAddrInfo(local); + local_ip = local; }