]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Optimization: revert WCCP setup to using sockaddr_in
authorAmos Jeffries <squid3@treenet.co.nz>
Thu, 2 Jun 2011 13:05:12 +0000 (01:05 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Thu, 2 Jun 2011 13:05:12 +0000 (01:05 +1200)
Replaces a some malloc/free with local stack variables and a memset

src/wccp.cc

index fdad1a0a8229df7c5c5e374d73a071eb46bee60d..0c6d36b5f6f775473fa296929c815503cad64535 100644 (file)
@@ -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;
 }