diff --git a/AUTHORS b/AUTHORS index 579ee0c48b..4ff695baf5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -140,6 +140,7 @@ odk- Pascal Borreli Paul Bowsher Paul Hammond +Paul Nasrat Phil Spitler Piotr Bogdan pysqz diff --git a/container.go b/container.go index 2e52c95326..c330b86e33 100644 --- a/container.go +++ b/container.go @@ -1062,12 +1062,7 @@ func (container *Container) allocateNetwork() error { var iface *NetworkInterface var err error - if !container.State.Ghost { - iface, err = container.runtime.networkManager.Allocate() - if err != nil { - return err - } - } else { + if container.State.Ghost { manager := container.runtime.networkManager if manager.disabled { iface = &NetworkInterface{disabled: true} @@ -1077,8 +1072,20 @@ func (container *Container) allocateNetwork() error { Gateway: manager.bridgeNetwork.IP, manager: manager, } - ipNum := ipToInt(iface.IPNet.IP) - manager.ipAllocator.inUse[ipNum] = struct{}{} + if iface !=nil && iface.IPNet.IP != nil { + ipNum := ipToInt(iface.IPNet.IP) + manager.ipAllocator.inUse[ipNum] = struct{}{} + } else { + iface, err = container.runtime.networkManager.Allocate() + if err != nil { + return err + } + } + } + } else { + iface, err = container.runtime.networkManager.Allocate() + if err != nil { + return err } } diff --git a/container_test.go b/container_test.go index e863b9d84c..cbabffc364 100644 --- a/container_test.go +++ b/container_test.go @@ -1657,11 +1657,13 @@ func TestRestartGhost(t *testing.T) { runtime := mkRuntime(t) defer nuke(runtime) - container, err := runtime.Create(&Config{ - Image: GetTestImage(runtime).ID, - Cmd: []string{"sh", "-c", "echo -n bar > /test/foo"}, - Volumes: map[string]struct{}{"/test": {}}, - }, + container, _, err := runtime.Create( + &Config{ + Image: GetTestImage(runtime).ID, + Cmd: []string{"sh", "-c", "echo -n bar > /test/foo"}, + Volumes: map[string]struct{}{"/test": {}}, + }, + "", ) if err != nil { @@ -1677,4 +1679,4 @@ func TestRestartGhost(t *testing.T) { if err != nil { t.Fatal(err) } -} \ No newline at end of file +}