Browse Source

libnetwork/portmapper: PortMapper.MapRange: inline "cleanup" closure

The cleanup function never returns an error, so didn't add much value. This
patch removes the closure, and calls it inline to remove the extra
indirection, and removes the error which would never be returned.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 1 year ago
parent
commit
214ab2caef
1 changed files with 4 additions and 10 deletions
  1. 4 10
      libnetwork/portmapper/mapper.go

+ 4 - 10
libnetwork/portmapper/mapper.go

@@ -47,7 +47,7 @@ func NewWithPortAllocator(allocator *portallocator.PortAllocator, proxyPath stri
 }
 }
 
 
 // Map maps the specified container transport address to the host's network address and transport port
 // Map maps the specified container transport address to the host's network address and transport port
-func (pm *PortMapper) Map(container net.Addr, hostIP net.IP, hostPort int, useProxy bool) (host net.Addr, err error) {
+func (pm *PortMapper) Map(container net.Addr, hostIP net.IP, hostPort int, useProxy bool) (host net.Addr, _ error) {
 	return pm.MapRange(container, hostIP, hostPort, hostPort, useProxy)
 	return pm.MapRange(container, hostIP, hostPort, hostPort, useProxy)
 }
 }
 
 
@@ -174,17 +174,11 @@ func (pm *PortMapper) MapRange(container net.Addr, hostIP net.IP, hostPortStart,
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	cleanup := func() error {
-		// need to undo the iptables rules before we return
+	if err := m.userlandProxy.Start(); err != nil {
+		// FIXME(thaJeztah): both stopping the proxy and deleting iptables rules can produce an error, and both are not currently handled.
 		m.userlandProxy.Stop()
 		m.userlandProxy.Stop()
+		// need to undo the iptables rules before we return
 		pm.DeleteForwardingTableEntry(m.proto, hostIP, allocatedHostPort, containerIP.String(), containerPort)
 		pm.DeleteForwardingTableEntry(m.proto, hostIP, allocatedHostPort, containerIP.String(), containerPort)
-		return nil
-	}
-
-	if err := m.userlandProxy.Start(); err != nil {
-		if err := cleanup(); err != nil {
-			return nil, fmt.Errorf("Error during port allocation cleanup: %v", err)
-		}
 		return nil, err
 		return nil, err
 	}
 	}