From 021d71de29880ec60a85ec8b73d15d5a9ceb4005 Mon Sep 17 00:00:00 2001 From: Alessandro Boch Date: Wed, 5 Aug 2015 17:13:46 -0700 Subject: [PATCH] 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 --- libnetwork/endpoint.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 7ef8459f31..3475e9eafd 100644 --- a/libnetwork/endpoint.go +++ b/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) } }