@@ -16,7 +16,7 @@ var notFirstRun bool
16
16
var lastNotEmpty bool
17
17
18
18
// overridden by tests
19
- var resolvconfGet = resolvconf .Get
19
+ var resolvconfPath = resolvconf .Path
20
20
21
21
type DNSConfig struct {
22
22
Nameservers []string
@@ -39,7 +39,7 @@ func GetResolvConf(ctx context.Context, stateDir string, idmap *idtools.Identity
39
39
generate = true
40
40
}
41
41
if ! generate {
42
- fiMain , err := os .Stat (resolvconf . Path ())
42
+ fiMain , err := os .Stat (resolvconfPath ())
43
43
if err != nil {
44
44
if ! errors .Is (err , os .ErrNotExist ) {
45
45
return nil , err
@@ -60,33 +60,30 @@ func GetResolvConf(ctx context.Context, stateDir string, idmap *idtools.Identity
60
60
return "" , nil
61
61
}
62
62
63
- var dt []byte
64
- f , err := resolvconfGet ()
65
- if err != nil {
66
- if ! errors .Is (err , os .ErrNotExist ) {
67
- return "" , err
68
- }
69
- } else {
70
- dt = f .Content
63
+ dt , err := os .ReadFile (resolvconfPath ())
64
+ if err != nil && ! errors .Is (err , os .ErrNotExist ) {
65
+ return "" , err
71
66
}
72
67
68
+ var f * resolvconf.File
69
+ tmpPath := p + ".tmp"
73
70
if dns != nil {
74
71
var (
75
- dnsNameservers = resolvconf . GetNameservers ( dt , resolvconf . IP )
76
- dnsSearchDomains = resolvconf . GetSearchDomains ( dt )
77
- dnsOptions = resolvconf . GetOptions ( dt )
72
+ dnsNameservers = dns . Nameservers
73
+ dnsSearchDomains = dns . SearchDomains
74
+ dnsOptions = dns . Options
78
75
)
79
- if len (dns .Nameservers ) > 0 {
80
- dnsNameservers = dns . Nameservers
76
+ if len (dns .Nameservers ) == 0 {
77
+ dnsNameservers = resolvconf . GetNameservers ( dt , resolvconf . IP )
81
78
}
82
- if len (dns .SearchDomains ) > 0 {
83
- dnsSearchDomains = dns . SearchDomains
79
+ if len (dns .SearchDomains ) == 0 {
80
+ dnsSearchDomains = resolvconf . GetSearchDomains ( dt )
84
81
}
85
- if len (dns .Options ) > 0 {
86
- dnsOptions = dns . Options
82
+ if len (dns .Options ) == 0 {
83
+ dnsOptions = resolvconf . GetOptions ( dt )
87
84
}
88
85
89
- f , err = resolvconf .Build (p + ".tmp" , dnsNameservers , dnsSearchDomains , dnsOptions )
86
+ f , err = resolvconf .Build (tmpPath , dnsNameservers , dnsSearchDomains , dnsOptions )
90
87
if err != nil {
91
88
return "" , err
92
89
}
@@ -98,7 +95,6 @@ func GetResolvConf(ctx context.Context, stateDir string, idmap *idtools.Identity
98
95
return "" , err
99
96
}
100
97
101
- tmpPath := p + ".tmp"
102
98
if err := os .WriteFile (tmpPath , f .Content , 0644 ); err != nil {
103
99
return "" , err
104
100
}
0 commit comments