mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Resolver sockets not flushed on default gw change
Currently when the default gw changes because of other network connections happening in the container the resolver sockets are not flushed. This results in a subsequent DNS failure for external queries A sequence of connecting the container to an overlay network and subsequently to a bridge network without disconnecting from any network will result in this behaviour. This was revealed by one of the libnetwork IT tests. This is now fixed as part of the commit by flushing the external query sockets when a default gw change is detected. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
This commit is contained in:
parent
77c66f968b
commit
d81a91ebad
2 changed files with 8 additions and 0 deletions
|
@ -477,6 +477,10 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error {
|
|||
ep.Name(), ep.ID(), err)
|
||||
}
|
||||
}
|
||||
|
||||
if sb.resolver != nil {
|
||||
sb.resolver.FlushExtServers()
|
||||
}
|
||||
}
|
||||
|
||||
if !sb.needDefaultGW() {
|
||||
|
|
|
@ -158,6 +158,10 @@ func (r *resolver) Start() error {
|
|||
|
||||
func (r *resolver) FlushExtServers() {
|
||||
for i := 0; i < maxExtDNS; i++ {
|
||||
if r.extDNSList[i].extConn != nil {
|
||||
r.extDNSList[i].extConn.Close()
|
||||
}
|
||||
|
||||
r.extDNSList[i].extConn = nil
|
||||
r.extDNSList[i].extOnce = sync.Once{}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue