651e694508
In situations where `container.NetworkSettings` was not nil, but `container.NetworkSettings.Networks` was, a panic could occur: ``` 2019-06-10 15:26:50.548309 I | http: panic serving @: assignment to entry in nil map goroutine 1376 [running]: net/http.(*conn).serve.func1(0xc4211068c0) /usr/local/go/src/net/http/server.go:1726 +0xd2 panic(0x558939d7e1e0, 0x55893a0c4410) /usr/local/go/src/runtime/panic.go:502 +0x22d github.com/docker/docker/daemon.(*Daemon).updateNetworkSettings(0xc42090c5a0, 0xc420fb6fc0, 0x55893a101140, 0xc4210e0540, 0xc42112aa80, 0xc4217d77a0, 0x0) /go/src/github.com/docker/docker/daemon/container_operations.go:275 +0x40e github.com/docker/docker/daemon.(*Daemon).updateNetworkConfig(0xc42090c5a0, 0xc420fb6fc0, 0x55893a101140, 0xc4210e0540, 0xc42112aa80, 0x55893a101101, 0xc4210e0540, 0x0) /go/src/github.com/docker/docker/daemon/container_operations.go:683 +0x219 github.com/docker/docker/daemon.(*Daemon).connectToNetwork(0xc42090c5a0, 0xc420fb6fc0, 0xc420e8290f, 0x40, 0xc42112aa80, 0x558937eabd01, 0x0, 0x0) /go/src/github.com/docker/docker/daemon/container_operations.go:728 +0x1cb github.com/docker/docker/daemon.(*Daemon).ConnectToNetwork(0xc42090c5a0, 0xc420fb6fc0, 0xc420e8290f, 0x40, 0xc42112aa80, 0x0, 0x0) /go/src/github.com/docker/docker/daemon/container_operations.go:1046 +0x2b3 github.com/docker/docker/daemon.(*Daemon).ConnectContainerToNetwork(0xc42090c5a0, 0xc4214ca580, 0x40, 0xc420e8290f, 0x40, 0xc42112aa80, 0x2, 0xe600000000000001) /go/src/github.com/docker/docker/daemon/network.go:450 +0xa1 github.com/docker/docker/api/server/router/network.(*networkRouter).postNetworkConnect(0xc42121bbc0, 0x55893a0edee0, 0xc420de7cb0, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x5589394707cc, 0x5) /go/src/github.com/docker/docker/api/server/router/network/network_routes.go:278 +0x330 github.com/docker/docker/api/server/router/network.(*networkRouter).(github.com/docker/docker/api/server/router/network.postNetworkConnect)-fm(0x55893a0edee0, 0xc420de7cb0, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x558937fd89dc, 0x558939f2cec0) /go/src/github.com/docker/docker/api/server/router/network/network.go:37 +0x6b github.com/docker/docker/api/server/middleware.ExperimentalMiddleware.WrapHandler.func1(0x55893a0edee0, 0xc420de7cb0, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x55893a0edee0, 0xc420de7cb0) /go/src/github.com/docker/docker/api/server/middleware/experimental.go:26 +0xda github.com/docker/docker/api/server/middleware.VersionMiddleware.WrapHandler.func1(0x55893a0edee0, 0xc420de7a70, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x0, 0x0) /go/src/github.com/docker/docker/api/server/middleware/version.go:62 +0x401 github.com/docker/docker/pkg/authorization.(*Middleware).WrapHandler.func1(0x55893a0edee0, 0xc420de7a70, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x0, 0x558939640868) /go/src/github.com/docker/docker/pkg/authorization/middleware.go:59 +0x7ab github.com/docker/docker/api/server/middleware.DebugRequestMiddleware.func1(0x55893a0edee0, 0xc420de7a70, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600, 0xc420de7980, 0x55893a0edee0, 0xc420de7a70) /go/src/github.com/docker/docker/api/server/middleware/debug.go:53 +0x4b8 github.com/docker/docker/api/server.(*Server).makeHTTPHandler.func1(0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600) /go/src/github.com/docker/docker/api/server/server.go:141 +0x19a net/http.HandlerFunc.ServeHTTP(0xc420e0c0e0, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600) /usr/local/go/src/net/http/server.go:1947 +0x46 github.com/docker/docker/vendor/github.com/gorilla/mux.(*Router).ServeHTTP(0xc420ce5950, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600) /go/src/github.com/docker/docker/vendor/github.com/gorilla/mux/mux.go:103 +0x228 github.com/docker/docker/api/server.(*routerSwapper).ServeHTTP(0xc421078330, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600) /go/src/github.com/docker/docker/api/server/router_swapper.go:29 +0x72 net/http.serverHandler.ServeHTTP(0xc420902f70, 0x55893a0ec2e0, 0xc4207f0e00, 0xc420173600) /usr/local/go/src/net/http/server.go:2697 +0xbe net/http.(*conn).serve(0xc4211068c0, 0x55893a0ede20, 0xc420d81440) /usr/local/go/src/net/http/server.go:1830 +0x653 created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2798 +0x27d ``` I have not been able to reproduce the situation, but preventing a panic should not hurt. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> |
||
---|---|---|
.. | ||
cluster | ||
config | ||
discovery | ||
events | ||
exec | ||
graphdriver | ||
images | ||
initlayer | ||
links | ||
listeners | ||
logger | ||
names | ||
network | ||
stats | ||
testdata | ||
apparmor_default.go | ||
apparmor_default_unsupported.go | ||
archive.go | ||
archive_tarcopyoptions.go | ||
archive_tarcopyoptions_unix.go | ||
archive_tarcopyoptions_windows.go | ||
archive_unix.go | ||
archive_windows.go | ||
attach.go | ||
auth.go | ||
changes.go | ||
checkpoint.go | ||
cluster.go | ||
commit.go | ||
configs.go | ||
configs_linux.go | ||
configs_unsupported.go | ||
configs_windows.go | ||
container.go | ||
container_linux.go | ||
container_operations.go | ||
container_operations_unix.go | ||
container_operations_windows.go | ||
container_unix_test.go | ||
container_windows.go | ||
create.go | ||
create_test.go | ||
create_unix.go | ||
create_windows.go | ||
daemon.go | ||
daemon_linux.go | ||
daemon_linux_test.go | ||
daemon_test.go | ||
daemon_unix.go | ||
daemon_unix_test.go | ||
daemon_unsupported.go | ||
daemon_windows.go | ||
daemon_windows_test.go | ||
debugtrap_unix.go | ||
debugtrap_unsupported.go | ||
debugtrap_windows.go | ||
delete.go | ||
delete_test.go | ||
dependency.go | ||
devices_linux.go | ||
disk_usage.go | ||
errors.go | ||
events.go | ||
events_test.go | ||
exec.go | ||
exec_linux.go | ||
exec_linux_test.go | ||
exec_windows.go | ||
export.go | ||
health.go | ||
health_test.go | ||
info.go | ||
info_test.go | ||
info_unix.go | ||
info_unix_test.go | ||
info_windows.go | ||
inspect.go | ||
inspect_linux.go | ||
inspect_test.go | ||
inspect_windows.go | ||
keys.go | ||
keys_unsupported.go | ||
kill.go | ||
licensing.go | ||
licensing_test.go | ||
links.go | ||
list.go | ||
list_test.go | ||
list_unix.go | ||
list_windows.go | ||
logdrivers_linux.go | ||
logdrivers_windows.go | ||
logs.go | ||
logs_test.go | ||
metrics.go | ||
metrics_unix.go | ||
metrics_unsupported.go | ||
monitor.go | ||
mounts.go | ||
names.go | ||
network.go | ||
nvidia_linux.go | ||
oci_linux.go | ||
oci_linux_test.go | ||
oci_utils.go | ||
oci_windows.go | ||
oci_windows_test.go | ||
pause.go | ||
prune.go | ||
reload.go | ||
reload_test.go | ||
reload_unix.go | ||
reload_windows.go | ||
rename.go | ||
resize.go | ||
resize_test.go | ||
restart.go | ||
seccomp_disabled.go | ||
seccomp_linux.go | ||
seccomp_unsupported.go | ||
secrets.go | ||
secrets_linux.go | ||
secrets_unsupported.go | ||
secrets_windows.go | ||
selinux_linux.go | ||
selinux_unsupported.go | ||
start.go | ||
start_unix.go | ||
start_windows.go | ||
stats.go | ||
stats_collector.go | ||
stats_unix.go | ||
stats_windows.go | ||
stop.go | ||
top_unix.go | ||
top_unix_test.go | ||
top_windows.go | ||
trustkey.go | ||
trustkey_test.go | ||
unpause.go | ||
update.go | ||
update_linux.go | ||
update_windows.go | ||
util_test.go | ||
volumes.go | ||
volumes_linux.go | ||
volumes_linux_test.go | ||
volumes_unit_test.go | ||
volumes_unix.go | ||
volumes_unix_test.go | ||
volumes_windows.go | ||
wait.go | ||
workdir.go |