aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-02-10 16:35:35 -0800
committerRuss Cox <rsc@golang.org>2010-02-10 16:35:35 -0800
commitc312d0e0cacb419a414578a7eb3fb56ceb3964e3 (patch)
treeeeadebea6b2c1356b4140d80b4c26f54f51f7645
parent66cdc699b28c44a448a6a502b0ee69c9a942f959 (diff)
downloadgo-c312d0e0cacb419a414578a7eb3fb56ceb3964e3.tar.gz
go-c312d0e0cacb419a414578a7eb3fb56ceb3964e3.zip
net: use slightly less predictable dns request id
not trying to be secure, just not repetitive (sending with the same id repeatedly makes some resolvers stop replying.) eventually we'll replace this with linking against the system's native resolver. R=p CC=golang-dev https://golang.org/cl/207051
-rw-r--r--src/pkg/net/dnsclient.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pkg/net/dnsclient.go b/src/pkg/net/dnsclient.go
index 7820244b28..0a6fca0115 100644
--- a/src/pkg/net/dnsclient.go
+++ b/src/pkg/net/dnsclient.go
@@ -17,6 +17,8 @@ package net
import (
"once"
"os"
+ "rand"
+ "time"
)
// DNSError represents a DNS lookup error.
@@ -44,7 +46,7 @@ func _Exchange(cfg *_DNS_Config, c Conn, name string) (m *_DNS_Msg, err os.Error
return nil, &DNSError{"name too long", name, ""}
}
out := new(_DNS_Msg)
- out.id = 0x1234
+ out.id = uint16(rand.Int()) ^ uint16(time.Nanoseconds())
out.question = []_DNS_Question{
_DNS_Question{name, _DNS_TypeA, _DNS_ClassINET},
}