Rafael Dantas Justo
124839738d
Fallback to normal connection if TLS fails
...
As described in document draft-ietf-dprive-dns-over-tls [1] we should fallback
to normal connection (without TLS) if there's any error with the TLS
connection.
See #297
[1] http://tools.ietf.org/html/draft-ietf-dprive-dns-over-tls-02
2016-01-04 10:49:20 -02:00
Rafael Dantas Justo
ce3e1286f2
TLS connection must be via TCP
...
See #297
2016-01-04 10:46:14 -02:00
Rafael Dantas Justo
72d475a8fe
Allow changing the default TLS configuration
...
When starting a TLS connection in some environments, we usually disabled some
certificates checks to allow tests with self-signed certificates. To disable
this checks we need to change some TLS parameters when starting a connection,
and for that we need to inject this parameters in the API.
Now the Client will also have an attribute for the TLS configuration
parameters. For future refactories, we could change the TLS attribute from bool
to a struct that would store the "Enable" flag and the configuration.
See #297
2016-01-04 10:30:39 -02:00
Rafael Dantas Justo
0d866c924c
Add option in client to allow DNS over TLS
...
We should allow the client to send requests to a recursive DNS server using a
encrypted connection. This is proposed on the document
draft-ietf-dprive-dns-over-tls [1].
For now we didn't allow the API user to change the TLS configuration (using
defaults). We also need to add the intelligence to fallback to normal DNS when
the TLS connection fails (as described in the draft).
See #297
[1] http://tools.ietf.org/html/draft-ietf-dprive-dns-over-tls-02
2016-01-04 10:05:29 -02:00
James Hartig
2d2c2ebcfc
Instead of removing all RRs on Truncated, attempt to unpack
2015-11-01 15:51:09 -05:00
Tomás Senart
56b3ff5401
client: SetReadDeadline after write, before read
...
The current code sets the read deadline at the same time as the write
deadline. If the write nearly times out but doesn't, the read timeout
can fire before the read happens within the specified deadline.
2015-10-06 13:34:20 +02:00
Miek Gieben
3c158e6e74
Correct set srv.started to false on error
...
Unlock the lock and set started to false when we return an error
during the startup.
Fixes #263
2015-09-23 22:00:38 +01:00
Miek Gieben
2f503031b0
Rename to ReadMsgHeader
...
Slightly more descriptive and remove the underscore of _DNSHeaderSize
and call is headerSize.
2015-07-03 09:31:53 +01:00
Alex Sergeyev
b0d6ff308e
Fixed things found in code review (comments, semantics).
2015-07-02 22:42:02 -04:00
Alex Sergeyev
b625f190ce
Not allocating 64K buffers for reading
2015-06-29 08:06:49 -04:00
Alex Sergeyev
53dfadf090
Shortened ReadMsg using ReadMsgBytes, added a constant.
2015-06-28 20:21:37 -04:00
Alex Sergeyev
2f3bcbd506
Added function for lazy message reading per #222
2015-06-28 20:21:37 -04:00
Alex Sergeyev
387c041985
Changed logic around reserving wire read buffer
2015-06-16 21:21:22 -04:00
Alex Sergeyev
416c39c6e9
Removed redundant code #220
2015-06-16 19:24:38 -04:00
Miek Gieben
031d041ced
Merge pull request #209 from michaelharo/client
...
Cleanup Client.exchange
2015-05-07 07:28:34 +01:00
Michael Haro
32448f39cd
Cleanup Client.exchange
...
Make Client's exchange function easier to read by moving timeout logic
into separate functions.
Start the timers closer to where they're used so that time from other
logic doesn't impact the deadlines.
2015-05-05 23:23:53 -07:00
Michael Haro
b9c528f99c
Keep Exchange as it was, but still check ID.
2015-05-05 23:20:46 -07:00
Michael Haro
dddcd696ba
Check that the query ID matches the answer ID.
...
Reduce some code duplication by making Exchange() use Client.Exchange().
When performing an Exchange if the query ID does not match the answer ID
return an error. Also add a test for this condition.
2015-05-05 23:00:16 -07:00
Miek Gieben
6427527bba
Check EDNS0 bufsize in Exchange()
...
In client.Exchange we *did* check for this size, to the same in the
function Exchange(). This bug surfaced in issue #184 , this sort of
fixes it.
Closes #184 .
2015-02-24 18:16:58 +00:00
Miek Gieben
67945c119e
A bunch of golint fixes
...
The proposed vars names are a nono, because they break the API.
Things left: document each RR and zscan_rr.go has some funcky if-then-elses.
2015-02-19 09:58:33 +00:00
StalkR
fe160dfba4
minor clean ups: use time.Second instead of 1e9, do not reference ns as time.Duration is enough
2015-01-15 23:11:11 +01:00
Miek Gieben
0aa3021a83
Remove all copyright notices
...
Use the central COPYRIGHT file.
2014-09-11 20:57:37 +01:00
Miek Gieben
17c7921aa2
Documentation updates
2014-07-31 08:48:26 +00:00
Miek Gieben
0258525f20
Comment tweak
2014-02-14 22:47:53 +00:00
Miek Gieben
e81b46d580
Add client.UDPsize
...
This allows a client to set a default UDPSize with resorting to EDNS0
headers 'n stuff.
2014-02-14 22:14:41 +00:00
Marek Majkowski
2cfad667d7
msg.Copy() makes a deep-copy of the msg object
...
There was a copy function that did shallow copies of the msg
object. Export it and make it support proper deep copying.
2014-01-10 08:49:45 -08:00
Miek Gieben
52f9a59ac1
Cleanup singleFlight a bit
2014-01-08 10:10:39 +00:00
Miek Gieben
f094f37de3
Add shortbuf erorr too
...
Cleanup the pull request a bit.
2014-01-04 11:17:13 +00:00
Miek Gieben
b1f108f79c
Simplify client TCP write.
...
Use the same patch as in the server.
2014-01-04 08:30:08 +00:00
Miek Gieben
451c12da09
typo
2013-12-30 16:46:53 +00:00
Miek Gieben
902ff847c8
Update Exchange documention about retries
...
Exchange does not fallback to tcp, nor will retry the query. Make
this more clear.
2013-12-27 07:48:30 +00:00
Miek Gieben
37a1ae569b
Remove this tidbit of documentation
...
A nil client is wrong. Just remove the sentence instead of coming
up with something that is technically correct, but doesn't read
nicely.
Closes : #60
2013-11-21 13:27:20 +00:00
Miek Gieben
9b15d749d8
remove newline
2013-11-01 09:51:50 +00:00
Miek Gieben
81fb20e093
Actually make the conn
2013-11-01 09:50:55 +00:00
Miek Gieben
37c7c70289
Use the Dial and DialTimeout function internally
2013-11-01 09:42:55 +00:00
Miek Gieben
d789796e53
Add Dial and DialTimeout to the client api.
...
This is just to mimic net as much as possible.
2013-11-01 09:40:44 +00:00
Miek Gieben
717a8179f5
Use recommendation from RFC5966 and set idle timeout much lower
2013-10-19 22:00:17 +01:00
Miek Gieben
ed0b128bd2
Add some groundwork for implementing rfc5966 recommendations
2013-10-18 11:59:19 +00:00
Miek Gieben
4b1cacf2d2
Update the doc a little
2013-10-18 09:14:31 +00:00
Miek Gieben
86186e27e4
Just use Read
2013-10-12 18:47:11 +01:00
Miek Gieben
aa44c75b91
Merge net branch
2013-10-12 18:32:53 +01:00
Miek Gieben
68083bc956
Fix merge conflict from net branch
2013-10-12 17:59:46 +01:00
Miek Gieben
7691523300
Re-add ExchangeConn
...
ExchangeConn is back, but with a warning. Other various improvements.
2013-10-12 12:44:02 +01:00
Miek Gieben
97603e3f62
Readd ExchangeConn
2013-10-12 12:35:09 +01:00
Miek Gieben
77d78f3218
More xfr fixes, does not work yet
2013-10-11 22:34:04 +01:00
Miek Gieben
ca3c488ad8
Fix transfer
2013-10-11 16:36:37 +00:00
Miek Gieben
b987dc6246
More transfer stuff
2013-10-11 16:18:37 +00:00
Miek Gieben
403baeb73a
Rework the transfers stuff
2013-10-02 20:35:13 +01:00
Eric Gavaletz
7f3472cc74
Patching to make compatible with appengine/socket.
...
The interface conversion from socket.Conn to net.UDPConn fails, but
since you can use a generic Read(b) in place of ReadFromUDP(b) it makes
sense to git rid of the conversion to net.UDPConn. This change allows
the use of the client library for UDP DNS lookup using the
appengine/socket package's Conn.
For the same reasons the interface conversions for TCP connections were
also removed.
2013-10-02 11:41:26 -04:00
Miek Gieben
db3de29edc
doc updates
2013-09-29 20:30:04 +01:00
Miek Gieben
b02f1b5203
Add Timeouts back in.
...
Fix the timeouts
2013-09-29 11:46:39 +01:00
Miek Gieben
500a32e64f
Update all the tests
2013-09-29 11:26:02 +01:00
Miek Gieben
9a38f97391
Fix timeouts, Tsig and EDNS0 update size
2013-09-29 11:21:18 +01:00
Miek Gieben
b97b3340fb
Make TSIG work again
...
Start fixing and using the UDP bufsize option.
2013-09-29 10:22:27 +01:00
Miek Gieben
4bde528be5
Export dns.Conn and make it more like net.Conn
...
Export lowlevel function and types so that they may be used.
They higher level Exchange function is still there. ExchangeConn
is gone, because it is not needed.
2013-09-28 21:58:08 +01:00
Miek Gieben
22977491c3
Try to use Conn
2013-09-28 20:31:29 +01:00
Miek Gieben
2b6e9122bd
Use the better name: SingleInflight
2013-09-06 09:49:07 +00:00
Miek Gieben
bb71be0271
Implement outstanding query detection.
...
Copied from the standard library and adapted to Go DNS.
2013-08-24 02:28:58 +00:00
Miek Gieben
d117fda34b
Perform query inflight deduplication
...
Taking a queue from Go tip, I copied over the new code and tweaked
it a bit for use in Go DNS.
2013-08-23 22:56:34 +00:00
Miek Gieben
3457c0428d
Some work in outstanding query de-deplication
2013-08-23 20:29:52 +00:00
Miek Gieben
11d592bfa7
client.Retry does not do anything
...
Remove from the struct as it was not implemented.
2013-06-15 20:35:09 +01:00
Miek Gieben
f595bf7a06
Set license on test files
2013-05-12 16:09:52 +02:00
Miek Gieben
19d93e2181
Fix it
2013-01-28 21:49:23 +01:00
Miek Gieben
6dfe504a09
small cleanups
2013-01-28 20:41:17 +01:00
Miek Gieben
73b9284ec7
remove dead code
2013-01-28 20:40:41 +01:00
Miek Gieben
23483f7959
Make it compile
2013-01-28 20:32:36 +01:00
Miek Gieben
0dc922a99b
Add a ExchangeConn
2013-01-28 20:30:13 +01:00
Miek Gieben
c8f880217f
Close the connection
...
Patch from: Alex Sergeyev
2013-01-28 19:27:24 +01:00
Miek Gieben
4ba5ac6863
Remove client.Attempts
...
Didn't like it anyway and it made the calling logic a mess. So it is
now removed. Failed queries can be redone, but they should be initiated
from the client, not within the library.
2013-01-11 19:20:49 +01:00
Miek Gieben
e66c2a1324
m.Size isnt used
2012-12-14 13:33:24 +01:00
Miek Gieben
3609f3e7a5
gofmt -s
2012-12-09 19:07:31 +01:00
Miek Gieben
d758825590
more documentation
2012-12-02 10:14:53 +01:00
Miek Gieben
1297852fdc
Fix tcp read/writes and client.Attempts
...
Thanks to a bug report from Vitalie Cherpec which commented that this
didn't work.
The timeout settings we not in the client.attempts loop, so they
were only active for the first attempt. And the loop wasn't broken
out of when the write or read succeeded.
Both these issues are now fixed.
2012-11-22 15:06:21 +01:00
Miek Gieben
c7ad10314a
Remove the Do function -- easy to do in standard Go
2012-11-19 18:14:09 +01:00
Miek Gieben
33e3a5396e
Dont even bother do allocate a channel
2012-11-19 16:55:14 +01:00
Miek Gieben
e2ca025569
update documentation
2012-11-19 16:22:54 +01:00
Miek Gieben
5349c3532f
Per suggestion of Jan Mercle
2012-11-19 14:43:02 +01:00
Miek Gieben
a0b6e30da7
Fix chaos.go for the new api
2012-11-18 13:51:42 +01:00
Miek Gieben
553b780257
Rearrange some comments
2012-11-18 13:28:16 +01:00
Miek Gieben
b34501bc1a
add remark
2012-11-18 13:12:11 +01:00
Miek Gieben
cbf025827a
Fix the documentation
2012-11-18 13:03:11 +01:00
Miek Gieben
ccaa90b31e
Make client.Do() return a channel (ala time.NewTicker)
...
This new API finally makes sense, and ditches the callback
2012-11-18 12:50:22 +01:00
Miek Gieben
099d0c1fc7
Add exchange structure for the client
2012-11-18 12:33:56 +01:00
Miek Gieben
3c3d2af072
Remove the Rtt variants
2012-11-18 12:29:40 +01:00
Miek Gieben
ea947838d8
Do the TCP write in one write
...
Before the tcp writes were done like NSD does them:
2 bytes length, and the rest of the message.
Now a complete buffer is created with LLMMM...MMM, where
LL is the 2 byte length and MMM...MMM is the message to be send.
This makes the reply faster at the cost of doing a realloc of the
message buffer.
2012-10-17 12:40:57 +02:00
Miek Gieben
1cca340f0b
Use attemps also in the dial function
2012-10-17 09:05:26 +02:00
Miek Gieben
bf1e1e15dc
docs
2012-10-16 19:14:03 +02:00
Miek Gieben
56221057d3
exchangeBuffer was and is not needed
2012-10-16 13:18:59 +02:00
Miek Gieben
be0423d80f
Tsig for queries is working again
2012-10-16 09:42:38 +02:00
Miek Gieben
2d3630ac98
refacter the client code a bit and remove the duplicate code
2012-10-16 09:36:52 +02:00
Miek Gieben
3089111fa4
calculate tsig in the normal query path too
2012-10-16 08:50:53 +02:00
Miek Gieben
39b9f93167
Fix tsig in the normal sending of queries
2012-10-15 20:00:49 +02:00
Miek Gieben
570bf8dc69
Use proper error in packing and unpacking
...
All the relevant functions now return an error instead of
a simple boolean. This greatly approves the feedback to coders.
Spotted some fishy error handling along the way and fix that too.
2012-10-09 21:17:54 +02:00
Miek Gieben
6e9317868b
doc tweaks
2012-09-01 17:06:24 +02:00
Miek Gieben
ff946625a6
small tweaks
2012-09-01 16:57:15 +02:00
Miek Gieben
7a0877d090
Merge conflict fixed
2012-08-31 15:10:43 +02:00
Miek Gieben
90a2076d8d
We were dialing twice
2012-08-31 14:55:47 +02:00
Miek Gieben
9255ad61ac
outgoing xfr works, but not for my Go code
2012-08-28 21:36:25 +02:00
Miek Gieben
68961f2f5b
Make the IsTsig and IsEdn0 more usefull by returning the record
2012-08-25 11:24:01 +02:00
Miek Gieben
15f03a72fb
Not needed
2012-08-23 10:33:33 +02:00