Miek Gieben
540899743c
Handle the last TCP connection
...
We currently close the connection after 128 TCP queries. But the
when the last query comes in, we close the connection immediately.
Fix this by moving the check to before we read data from the TCP
socket.
Fixes : #218 .
2015-08-31 17:40:56 +01:00
Miek Gieben
114b68f41b
go vet fixes
2015-08-23 07:24:08 +01:00
Miek Gieben
a6742d536c
Lock zone pattern deletion too
...
Go 1.5 -race flags this as data race, it's not performance critical,
add locking on the mutex.
2015-08-22 18:31:23 +01:00
Miek Gieben
eac4ea318f
Revert "Use defer Unlock() in ListAndServe"
...
This reverts commit d2cb5e8fef
.
2015-08-17 11:11:14 +01:00
Miek Gieben
d2cb5e8fef
Use defer Unlock() in ListAndServe
2015-08-12 07:49:41 +01:00
Jeff Hodges
1cb2437ad1
fix some data races in Server
...
This avoids some issues with Server.PacketConn and Server.Listener being
accessed outside of their locks.
Fixes #244 .
2015-08-11 17:00:14 -07:00
Miek Gieben
bbe3422804
small doc fixes
2015-08-09 15:34:29 +01:00
James DeFelice
8255b4a03f
update docs; replace "data frame" refs with "raw message"
2015-08-06 17:55:37 -04:00
James DeFelice
e148c23156
add docs and example for DNS frame read/write decorators
2015-08-04 09:04:40 -04:00
James DeFelice
e0f83dee9a
add interfaces to allow packet-level inspection for pre/post processing
2015-08-04 01:17:14 -04:00
Robert Gordon
5a357a6fc5
Expose the udp/tcp listening socket w/ ListenAndServe()
...
Expose the udp and tcp listening socket when ListenAndServe() is used, it seems like
plopping them on Server.Listener and Server.PacketConn would be ideal. The use case is so
that a port of zero can be used and having them exposed will allow for examination of the port
that is bound.
2015-04-18 06:52:30 +01:00
Peter M. Goldstein
9ef29b5646
Export UDP interfaces
2015-03-09 15:00:21 -07: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
Matthew Farrellee
24ccdb3008
fix spelling of separate
2015-02-18 17:04:12 -05:00
Miek Gieben
2b6f0d61e5
When locking *do* unlock
...
Add unlocking to some more places as pointed out by bronze1man.
Really closes #161 .
2015-01-13 08:12:02 +00:00
Miek Gieben
a07be6b2c1
Server: unlock when already started.
...
Closes #161
2015-01-11 09:26:00 +00:00
Miek Gieben
79f88fc5d7
fmt
2015-01-11 09:23:26 +00:00
Miek Gieben
8da60e45f5
Remove refs to IsMsg - we are not going to do this
2015-01-08 09:42:46 +00:00
Miek Gieben
2c1a31d550
Small cleanup of the docs
2014-12-12 12:57:47 +00:00
Hugo Landau
f039fd8203
Add NotifyStartedFunc field to Server
...
Adds a field, NotifyStartedFunc func() to Server.
If non-nil, it is called after a server starts listening. This is useful
for synchronization purposes, for example when a daemon needs to drop
privileges after binding. Otherwise, there is no way to determine when
the server has begun listening and hardcoded delays (!) must be used or
race conditions may occur.
2014-12-12 12:51:17 +00:00
Miek Gieben
cd2048a15a
Add Unsafe member to dns.Server
...
This stops it from checking if the incoming requests have the QR bit
unset, so be careful when enabling this. This can be useful in
combination with mDNS.
Also the check for only 1 question in the question section is relaxed
to be "at least one", even without setting Unsafe!
Also update TestServingResponse to test for Unsafe vs not using Unsafe.
2014-11-19 16:34:18 +00:00
Bryan Boreham
61478ac390
Removed duplicated test for UDPSize
2014-11-18 15:59:40 +00:00
Miek Gieben
d8da4d2fa7
Fix: drop requests with *cough* qr set.
...
Err, yeah.
2014-10-19 09:36:26 +00:00
Miek Gieben
0aa3021a83
Remove all copyright notices
...
Use the central COPYRIGHT file.
2014-09-11 20:57:37 +01:00
Miek Gieben
fbc3e49b78
Some documentation updates
2014-09-02 10:31:15 +00:00
Miek Gieben
ebc5489482
Fix datarace in Start/Shutdown
...
Add mutex and guard a 'started' boolean as well as the stopUDP
and tcpTCP channels so that 'go test -race' does not trigger.
Closes #111 , closes #114
2014-08-30 10:34:44 +01:00
Alex Sergeyev
fce659ba46
Restored code when shutdown needs an exchange...
...
Clients sents NULL-packet to server which helps to avoid
timeout. Timeout is still possible to encounter.
Shutdown will likely report error for those cases.
2014-08-29 14:27:53 -04:00
Alex Sergeyev
c618657d9b
Dealt with race condition detector warnings:
...
* stopped obvious race condition with replacing handler in
ServingLargeResponses test
* lowered probability of other race conditions with test code
while test server is yet activating
* fixed errmessage in Shutdown
2014-08-29 14:10:05 -04:00
Alex Sergeyev
ef07b9a69a
Following up in introducing getReadTimeout()
2014-08-29 12:26:23 -04:00
Alex Sergeyev
f735bb9dcb
Changed how shutdown works...
...
Now stopXXX event will stop any reading on currently open
socket and terminate reading loop. No special client/server
message is required anymore.
2014-08-29 12:24:11 -04:00
Alex Sergeyev
32d6e5396e
Continued removing Sleeping tests:
...
* incorporated @miekg suggestions on switch vs if
* for now moved reaction to stopXXX channel messages until
after the packet is responded to avoid client timeout in
Shutdown (causing 2 sec. hanged thread)
Still not great how the abort logic is implemented....
2014-08-29 08:31:27 -04:00
Alex Sergeyev
4b21f37064
Proposed way of creating no-timeout tests and...
...
... fix for Server.Shutdown() function.
2014-08-28 23:11:49 -04:00
Miek Gieben
2127b822dd
Add comment about Systemd
2014-08-28 07:54:23 +00:00
Miek Gieben
f0bd4137e2
Make Shutdown return error
...
This will be handy in feature, so that we can add a 1 second
timeout and then return failure.
2014-08-20 15:12:59 +00:00
Miek Gieben
01bbcbef60
Update documentation for Shutdown.
...
This completes issue #101 .
Fixes #101
2014-08-19 22:08:13 +01:00
Miek Gieben
eed2b9aeec
Fix Shutdown
2014-08-19 21:56:37 +01:00
Miek Gieben
f912994258
Don't relay on deadline to stop the server.
...
We just send ourselves an UDP or TCP packet so that the listener fails
through and picks up the quit bool send on the channel.
2014-08-19 21:46:00 +01:00
Miek Gieben
6c631cd4ff
Implement Shutdown()
...
This is working for TCP, but for UDP the Read does not honor the
deadline settings.
2014-08-19 09:25:41 +00:00
Miek Gieben
292c925c9f
update documentation
2014-08-18 22:21:02 +01:00
Miek Gieben
0d300b1fce
Add deadline to the listeners
...
Call this deadline to the listener will timeout and we will get to
so if the server should shutdown.
2014-08-18 22:14:29 +01:00
Miek Gieben
f3a6c86462
Implement Shutdown() call
...
And fix some tests to call Fatal().
2014-08-18 22:06:29 +01:00
Miek Gieben
6cf24a5637
Add a Shutdown method to server.
...
Allow gracefull shutdown of a server.
2014-08-18 20:30:10 +01:00
Miek Gieben
eb2d26cb96
Remove Pool from server.
...
A noop for some time, remove it.
2014-08-18 20:29:54 +01:00
Miek Gieben
fb3a1585ad
fmt
2014-07-27 20:38:11 +01:00
Luke Young
0a6f133b26
Match format of other code
2014-07-27 10:44:39 -07:00
Luke Young
12f91af6ed
Added ResponseWriter.LocalAddr support
2014-07-27 10:43:07 -07:00
Miek Gieben
62ee88c895
Documentation
2014-07-22 08:27:59 +01:00
Miek Gieben
e1cb18539a
Systemd support
...
Rename StartAndServe to ActivateAndServe and only use one PacketConn or
Listener. This just adds a new entry point into starting a server.
2014-07-21 15:24:55 +01:00
Miek Gieben
d80ad4aae5
Add support for systemd socket activation
2014-07-18 20:32:17 +01:00
Miek Gieben
d161b9087e
Cleanup the PR a bit
...
Remove code and simplify some functions. Documentation is still on the
todo.
Also don't export any of these functions and/or types.
2014-07-09 21:02:21 +01:00
Omri Bahumi
dea4cb300a
[ISSUE-95] Send replies from the right source IP address
...
Fixes #95
2014-07-07 18:16:42 +03:00
Miek Gieben
2ec512f89b
server: pool: remove pool implementation
...
Quite a lot of code for a tiny improvement. Lease the Pool boolean
option in server so current code does not break. Will be removed
in later versions.
2014-04-10 12:59:50 +00:00
Miek Gieben
8e37d3660d
Merge branch 'master' of github.com:miekg/dns
2014-01-07 07:45:29 +00:00
Miek Gieben
560a1c65b0
update license in pool.go
...
remove some build lines as I have no idea what they are
supposed to be doing.
2014-01-06 10:00:25 +00:00
Miek Gieben
aafa94f352
better docs
2014-01-05 19:45:30 +00:00
Miek Gieben
ac2ee587b1
Pool cleanups, readd wait for TCP
2014-01-05 16:29:07 +00:00
Miek Gieben
05ace47df8
Start of better documentation
2014-01-05 14:14:19 +00:00
Miek Gieben
5c37b9e564
Merge conflict resolved
2014-01-05 14:09:03 +00:00
Miek Gieben
8954a6e7c5
Remove debug logging
2014-01-05 13:51:59 +00:00
Miek Gieben
77345b2073
Don't set timeout
...
This leads to fake connection in the udp query handling.
2014-01-05 13:41:40 +00:00
Miek Gieben
49ece3e490
Add a memory pool
...
Re-use memory for UDP queries.
2014-01-05 13:39:33 +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
Armon Dadgar
0cf549278c
Simplify the Write() for TCP based connections
...
Simplify the code path by using io.Copy to handle partial writes. Allocate `l` large enough to avoid a re-allocation. Potential short write fix.
2014-01-03 15:19:35 -08:00
Andrew Tunnell-Jones
58bb85e9b4
ServeMux's match should only case fold A-Z
2013-12-14 09:04:29 +00:00
Miek Gieben
39c7a972c3
typo in doc
2013-10-26 21:36:43 +01:00
Miek Gieben
717a8179f5
Use recommendation from RFC5966 and set idle timeout much lower
2013-10-19 22:00:17 +01:00
Miek Gieben
949e660b37
Better comments
2013-10-19 11:44:13 +01:00
Miek Gieben
3b832a072a
Add TODO
2013-10-19 11:10:51 +01:00
Miek Gieben
08578961f5
Add a limit after which the connection is closed
2013-10-19 10:18:20 +01:00
Miek Gieben
5eca59c9e7
Correctly implement multiple queries over 1 tcp conn.
...
Completely transparant give users another query to handle.
2013-10-18 23:06:28 +01:00
Miek Gieben
ed0b128bd2
Add some groundwork for implementing rfc5966 recommendations
2013-10-18 11:59:19 +00:00
Miek Gieben
5e674212d0
Nobody uses these author/version handlers, kill them
2013-10-17 20:23:30 +01:00
Miek Gieben
145242b519
Cleanup the defer from serve()
...
Close the connection when returning.
2013-10-16 21:45:29 +01:00
Miek Gieben
075c815ff1
Fix udp handling
...
Make the Close() for the udp message a nop, as closing it would
close the udp listener.
Make the serve function simpler as this does not need to be in a
for-loop.
2013-10-16 21:38:11 +01:00
Miek Gieben
104d9bf0ba
remove mutex here
2013-10-15 20:44:55 +01:00
Miek Gieben
68083bc956
Fix merge conflict from net branch
2013-10-12 17:59:46 +01:00
Eric Gavaletz
41945815b8
Further patching for GAE compatibility.
...
Since net.ListenTCP, net.ListenUDP and net.TCPListener are not defined
in the GAE standard library these build flags will stop those files from
being imported. A better solution would have been to break up this
monolithic package into smaller parts.
2013-10-02 11:50:35 -04:00
Miek Gieben
9a38f97391
Fix timeouts, Tsig and EDNS0 update size
2013-09-29 11:21:18 +01:00
Miek Gieben
2b6e9122bd
Use the better name: SingleInflight
2013-09-06 09:49:07 +00:00
Miek Gieben
ac0703bbe6
Handle MixCase queries again.
...
Thanks Ask for reporting.
2013-07-25 08:32:10 +01:00
Miek Gieben
baa7ca4a82
Fix as212 server
2013-06-22 21:40:19 +01:00
Miek Gieben
5f6228d4cc
Use the non-exported version err
2013-06-20 07:27:28 +01:00
Miek Gieben
5d094e6e2d
gofmt
2013-06-14 19:42:55 +01:00
Miek Gieben
72f4cd81d8
Rename these internal values
...
_UDP and _TCP are ugly, just lowercase them.
2013-05-13 12:02:29 +02:00
Miek Gieben
5537ac771d
Recheck the server mux match logic
...
And a test to make sure it all works. The root zone can still
be configured as a last resort (wildcard) match.
2013-05-12 15:56:12 +02:00
Miek Gieben
d53d9eab81
gofmt
2013-05-05 20:30:44 +02:00
Miek Gieben
07d0e08366
Remove radix from core go dns
2013-05-04 23:21:01 +02:00
Miek Gieben
45775dff76
Remove the radix.Radix dependency
...
Put everything in maps. This removes to a major dependency and
makes Go DNS only depend on the core Go packages. This will
probably also be faster than the current setup -- although this
needs to be benchmarked.
2013-05-04 22:28:44 +02:00
Miek Gieben
602f3f4a49
typo
2012-12-28 09:20:15 +01:00
Miek Gieben
8cadf1d662
protect ServeMux access with a mutex
...
Make it "concurrent-use-safe"
2012-12-28 09:19:37 +01:00
Miek Gieben
3c4e9a95b4
update the documentation
2012-12-14 13:48:26 +01:00
Miek Gieben
235e892dfc
Rename the RR types drop the RR_ prefix
...
This is also done in the official Go library. It also make the
code shorter.
2012-12-09 19:23:25 +01:00
Miek Gieben
d758825590
more documentation
2012-12-02 10:14:53 +01:00
Miek Gieben
267cfaab11
Make ResponseWriter a io.Writer
...
The WriteBuf() is renamed Write() and returns and int and
an error. The old Write() call, is now WriteBuf()
2012-11-18 12:21:02 +01:00
Miek Gieben
00c4f46c7e
Make WriteBuf ala io.Write
2012-11-18 12:05:18 +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
006fae01d1
added 1.0 as version
2012-10-12 14:20:43 +02:00
Miek Gieben
3560da6104
conn is gone
2012-10-12 14:18:01 +02:00
Miek Gieben
9ab211d660
small tweaks
2012-10-12 14:03:56 +02:00