From 2b0d5b13391300f003763e6910b7b68d577a2473 Mon Sep 17 00:00:00 2001 From: Santhosh Manohar Date: Wed, 21 Sep 2016 13:38:29 -0700 Subject: [PATCH] Check for ExecFunc failure Signed-off-by: Santhosh Manohar --- libnetwork/sandbox.go | 12 +++++++----- libnetwork/sandbox_dns_unix.go | 8 ++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index 3bb1bb3644..f5d86ef20e 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -421,8 +421,7 @@ func (sb *sandbox) ResolveIP(ip string) string { } func (sb *sandbox) ExecFunc(f func()) error { - sb.osSbox.InvokeFunc(f) - return nil + return sb.osSbox.InvokeFunc(f) } func (sb *sandbox) ResolveService(name string) ([]*net.SRV, []net.IP) { @@ -639,9 +638,12 @@ func (sb *sandbox) SetKey(basePath string) error { if oldosSbox != nil && sb.resolver != nil { sb.resolver.Stop() - sb.osSbox.InvokeFunc(sb.resolver.SetupFunc(0)) - if err := sb.resolver.Start(); err != nil { - log.Errorf("Resolver Setup/Start failed for container %s, %q", sb.ContainerID(), err) + if err := sb.osSbox.InvokeFunc(sb.resolver.SetupFunc(0)); err == nil { + if err := sb.resolver.Start(); err != nil { + log.Errorf("Resolver Start failed for container %s, %q", sb.ContainerID(), err) + } + } else { + log.Errorf("Resolver Setup Function failed for container %s, %q", sb.ContainerID(), err) } } diff --git a/libnetwork/sandbox_dns_unix.go b/libnetwork/sandbox_dns_unix.go index 45b035e3e5..3f734511d8 100644 --- a/libnetwork/sandbox_dns_unix.go +++ b/libnetwork/sandbox_dns_unix.go @@ -46,9 +46,13 @@ func (sb *sandbox) startResolver(restore bool) { } sb.resolver.SetExtServers(sb.extDNS) - sb.osSbox.InvokeFunc(sb.resolver.SetupFunc(0)) + if err = sb.osSbox.InvokeFunc(sb.resolver.SetupFunc(0)); err != nil { + log.Errorf("Resolver Setup function failed for container %s, %q", sb.ContainerID(), err) + return + } + if err = sb.resolver.Start(); err != nil { - log.Errorf("Resolver Setup/Start failed for container %s, %q", sb.ContainerID(), err) + log.Errorf("Resolver Start failed for container %s, %q", sb.ContainerID(), err) } }) }