Ver Fonte

Fix bug "...has already joined the endpoint"

- In case of sandboxAdd() failure, drive.Leave() call
  in first executed defer reset err to nil. Secondly
  executed defer in charge of resetting ep.container to nil
  will not get executed.

Signed-off-by: Alessandro Boch <aboch@docker.com>
Alessandro Boch há 10 anos atrás
pai
commit
021d71de29
1 ficheiros alterados com 2 adições e 1 exclusões
  1. 2 1
      libnetwork/endpoint.go

+ 2 - 1
libnetwork/endpoint.go

@@ -410,7 +410,8 @@ func (ep *endpoint) Join(containerID string, options ...EndpointOption) error {
 	}
 	defer func() {
 		if err != nil {
-			if err = driver.Leave(nid, epid); err != nil {
+			// Do not alter global err variable, it's needed by the previous defer
+			if err := driver.Leave(nid, epid); err != nil {
 				log.Warnf("driver leave failed while rolling back join: %v", err)
 			}
 		}