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>
This commit is contained in:
Alessandro Boch 2015-08-05 17:13:46 -07:00
parent f7d4913ab9
commit 021d71de29
1 changed files with 2 additions and 1 deletions

View File

@ -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)
}
}