Browse code

Lock container while connecting to a new network.

`ConnectToNetwork` is modfying the container but is not locking the
object.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>

Brian Goff authored on 2017/06/01 03:52:43
Showing 1 changed files
... ...
@@ -980,6 +980,9 @@ func (daemon *Daemon) ConnectToNetwork(container *container.Container, idOrName
980 980
 	if endpointConfig == nil {
981 981
 		endpointConfig = &networktypes.EndpointSettings{}
982 982
 	}
983
+	container.Lock()
984
+	defer container.Unlock()
985
+
983 986
 	if !container.Running {
984 987
 		if container.RemovalInProgress || container.Dead {
985 988
 			return errRemovalContainer(container.ID)
... ...
@@ -1002,7 +1005,7 @@ func (daemon *Daemon) ConnectToNetwork(container *container.Container, idOrName
1002 1002
 			return err
1003 1003
 		}
1004 1004
 	}
1005
-	if err := container.ToDiskLocking(); err != nil {
1005
+	if err := container.ToDisk(); err != nil {
1006 1006
 		return fmt.Errorf("Error saving container to disk: %v", err)
1007 1007
 	}
1008 1008
 	return nil
... ...
@@ -1011,6 +1014,9 @@ func (daemon *Daemon) ConnectToNetwork(container *container.Container, idOrName
1011 1011
 // DisconnectFromNetwork disconnects container from network n.
1012 1012
 func (daemon *Daemon) DisconnectFromNetwork(container *container.Container, networkName string, force bool) error {
1013 1013
 	n, err := daemon.FindNetwork(networkName)
1014
+	container.Lock()
1015
+	defer container.Unlock()
1016
+
1014 1017
 	if !container.Running || (err != nil && force) {
1015 1018
 		if container.RemovalInProgress || container.Dead {
1016 1019
 			return errRemovalContainer(container.ID)
... ...
@@ -1038,7 +1044,7 @@ func (daemon *Daemon) DisconnectFromNetwork(container *container.Container, netw
1038 1038
 		return err
1039 1039
 	}
1040 1040
 
1041
-	if err := container.ToDiskLocking(); err != nil {
1041
+	if err := container.ToDisk(); err != nil {
1042 1042
 		return fmt.Errorf("Error saving container to disk: %v", err)
1043 1043
 	}
1044 1044