Bug fix: truncate /etc/resolv.conf, fixing DNS
- Refers to #326 - Refers to #329
This commit is contained in:
@@ -26,7 +26,7 @@ func (c *configurator) UseDNSInternally(ip net.IP) {
|
||||
func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error {
|
||||
c.logger.Info("using DNS address %s system wide", ip.String())
|
||||
const filepath = string(constants.ResolvConf)
|
||||
file, err := c.openFile(filepath, os.O_RDWR, 0644)
|
||||
file, err := c.openFile(filepath, os.O_RDWR|os.O_TRUNC, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -52,7 +52,7 @@ func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error {
|
||||
if !found {
|
||||
lines = append(lines, "nameserver "+ip.String())
|
||||
}
|
||||
s = strings.Join(lines, "\n")
|
||||
s = strings.Join(lines, "\n") + "\n"
|
||||
_, err = file.WriteString(s)
|
||||
if err != nil {
|
||||
_ = file.Close()
|
||||
|
||||
@@ -27,7 +27,7 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
||||
err error
|
||||
}{
|
||||
"no data": {
|
||||
writtenData: "nameserver 127.0.0.1",
|
||||
writtenData: "nameserver 127.0.0.1\n",
|
||||
},
|
||||
"open error": {
|
||||
openErr: fmt.Errorf("error"),
|
||||
@@ -38,17 +38,17 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
||||
err: fmt.Errorf("error"),
|
||||
},
|
||||
"write error": {
|
||||
writtenData: "nameserver 127.0.0.1",
|
||||
writtenData: "nameserver 127.0.0.1\n",
|
||||
writeErr: fmt.Errorf("error"),
|
||||
err: fmt.Errorf("error"),
|
||||
},
|
||||
"lines without nameserver": {
|
||||
data: []byte("abc\ndef\n"),
|
||||
writtenData: "abc\ndef\nnameserver 127.0.0.1",
|
||||
writtenData: "abc\ndef\nnameserver 127.0.0.1\n",
|
||||
},
|
||||
"lines with nameserver": {
|
||||
data: []byte("abc\nnameserver abc def\ndef\n"),
|
||||
writtenData: "abc\nnameserver 127.0.0.1\ndef",
|
||||
writtenData: "abc\nnameserver 127.0.0.1\ndef\n",
|
||||
},
|
||||
}
|
||||
for name, tc := range tests {
|
||||
@@ -83,7 +83,7 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
||||
|
||||
openFile := func(name string, flag int, perm os.FileMode) (os.File, error) {
|
||||
assert.Equal(t, string(constants.ResolvConf), name)
|
||||
assert.Equal(t, os.O_RDWR, flag)
|
||||
assert.Equal(t, os.O_RDWR|os.O_TRUNC, flag)
|
||||
assert.Equal(t, os.FileMode(0644), perm)
|
||||
return file, tc.openErr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user