Преглед на файлове

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 преди 10 години
родител
ревизия
021d71de29
променени са 1 файла, в които са добавени 2 реда и са изтрити 1 реда
  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() {
 	defer func() {
 		if err != nil {
 		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)
 				log.Warnf("driver leave failed while rolling back join: %v", err)
 			}
 			}
 		}
 		}