Willem Toorop
dc5a78b154
Printing something which is not on stack
...
(causing segfault in some cases)
2017-10-17 14:19:59 +02:00
Willem Toorop
f83c8e217e
Decrease assumptions based on network_by_query_id
2017-10-17 13:47:29 +02:00
Willem Toorop
ce4c44830d
Unused variables
2017-10-16 15:26:00 +02:00
Willem Toorop
968d94d2be
atomic netreq removal from write_queue in upstream_write_cb
2017-10-16 14:17:49 +02:00
Jim Hague
dc7daede40
Move Windows/Unix functions into new platform.h.
2017-10-06 12:07:15 +01:00
Jim Hague
757becc812
write() on a socket is equivalent to send() with flag value of 0.
2017-10-04 17:32:52 +01:00
Jim Hague
a0c313412d
Adjust Unix socket/Winsock handling.
...
Centralise it into util-internal.h, remove duplicate definitions from mdns, and add new pseudo-functions _getdns_closesocket(), _getdns_poll() and _getdns_socketerror(). Convert error values to simple values and convert error checking to use _getdns_socketerror() and the simple values. The simple values can also be used with the result from getsockopt() with SO_ERROR in stub.c.
2017-10-04 17:31:33 +01:00
Willem Toorop
712f62a4c1
Things that came out of compiling on Windows
2017-09-21 11:03:38 +02:00
Willem Toorop
8c4ed6294e
Merge branch 'develop' into features/zeroconf-dnssec
2017-09-14 12:27:47 +02:00
Sara Dickinson
f53e5645d9
Improve the comments about the new backoff handling.
...
Remove unnecessary log.
2017-09-13 10:00:56 +01:00
Sara Dickinson
b760a2ced2
Refine the logging levels to match the errors given when backing off, etc.
2017-09-12 15:01:02 +01:00
Sara Dickinson
729af1d159
Allow backed-off upstreams to be re-instated if all our upstreams are unusable (e.g. if the network is down).
...
But limit re-tries for a given netreq to the total number of upstreams before failing. This should (roughly) allow 2 retries per upstream of the correct transport before bailing out. Otherwise we are stuck in a loop retrying forever!
2017-09-12 13:47:56 +01:00
Willem Toorop
8aa46b305d
Merge branch 'develop' into features/zeroconf-dnssec
2017-09-11 11:09:58 +02:00
Sara Dickinson
2e4e3873e4
First pass at fixing problems when connections to servers are lost.
...
Need to reset connection state if connections fail at setup and on read/write if there are no more messages queued.
This means we will back-off servers that fail, so we should think about using a shorter backoff default in stubby
because otherwise temporarily loss of the network connection will mean having to restart stubby.
Also some minor changes to logging.
2017-09-06 11:05:08 +01:00
Willem Toorop
c6d40d9adc
Merge branch 'develop' into features/zeroconf-dnssec
2017-09-04 16:43:37 +02:00
Willem Toorop
5c8765fefe
No variable initializations in for loops
2017-09-01 16:23:26 +02:00
Willem Toorop
2ed2871549
Merge branch 'develop' into features/zeroconf-dnssec
2017-08-30 15:09:39 +02:00
Sara Dickinson
33ff6a95ac
Fix issue on macOX 10.10 where TCP fast open is detected but not implemented causing TCP to fail. The fix allows fallback to regular TCP in this case and is also more robust for cases where connectx() fails for some reason.
2017-08-18 17:59:49 +01:00
Neil Cook
1555c432f5
Fix array bounds bug in upstream_select
2017-07-31 22:51:24 +01:00
Neil Cook
2d7d6581b4
Ensure netreq->fd is set to -1 after close()/closesocket()
...
If netreq->fd is not set to -1, then multiple functions close the
same socket. This causes major issues in multithread code where the
socket must not be closed multiple times as it may be owned by a
different thread.
2017-07-31 22:48:09 +01:00
Willem Toorop
3e6c5775ff
Fetch and equip context with trust-anchors
2017-06-30 10:18:07 +02:00
Willem Toorop
264135e799
Reintroduct timestamps and replace GETDNS_DAEMON: with STUBBY:
2017-06-28 21:09:40 +02:00
Willem Toorop
8235250fb6
Rename SYSTEM_DAEMON in LOG_UPSTREAM_STATS
2017-06-28 20:57:53 +02:00
Willem Toorop
04e554086a
A configurable log function
...
Currently used only for DAEMON_DEBUG
2017-06-27 00:23:22 +02:00
Willem Toorop
9a273cf144
Get rid of superfluous struct member query_id
2017-06-15 21:24:40 +02:00
Willem Toorop
1d87437854
ERROR all outstanding netreqs whith a failed statefull upstream
...
Remove the currently processed netreq first, so it can be retries with another upstream/transport.
We MUST add netreq to the netreqs_by_query_id map even before we write to it, to have a reliable store of taken query ids.
2017-06-15 21:15:00 +02:00
Willem Toorop
d9158e639b
Clear netreq_by_query_id on upstream failure
...
But don't error the specific netreq then!
2017-06-15 17:21:05 +02:00
Willem Toorop
e2be41d352
Don't segfault on IPv6 unavailability
...
Resolved issue #306 ? Review needed!
Shoud upstream_failed cancel all the netreqs?
2017-06-14 15:36:53 +02:00
Willem Toorop
e00100b388
s/recieve/receive/
2017-06-09 11:24:51 +02:00
Willem Toorop
708e520989
Spelling fixes from Andreas Schulze
2017-04-11 23:33:24 +02:00
Willem Toorop
c9b3e3cf7b
Allow cleanup of naked idle timeouts
2017-04-06 20:50:34 +02:00
Willem Toorop
4ceec33d08
Do something about TLS renegotiation.
2017-04-06 11:46:10 +02:00
Willem Toorop
e08d3592a0
Schedule timeout when collecting for dnssec chain
2017-04-06 11:20:08 +02:00
Daniel Kahn Gillmor
9de4d6537b
Implement sensible default padding policy.
...
This commit changes the semantics of tls_query_padding_blocksize()
slightly. Where previously both 0 and 1 meant "no padding", this
commit changes 1 to mean "pad using a sensible policy".
At NDSS 2017's DNS privacy workshop, I presented an empirical study of
DNS padding policies:
https://www.internetsociety.org/events/ndss-symposium/ndss-symposium-2017/dns-privacy-workshop-2017-programme#session3
The slide deck is here:
https://dns.cmrg.net/ndss2017-dprive-empirical-DNS-traffic-size.pdf
The resulting recommendation from the research is that a simple
padding policy is relatively cheap and still protective of metadata
when DNS traffic is encrypted:
* queries should be padded to a multiple of 128 octets
* responses should be padded to a multiple of 468 octets
Since getdns is only currently doing queries over tls, we only have to
implement the first part of this policy :)
2017-03-26 14:37:28 -05:00
wtoorop
148dfabf88
Merge pull request #276 from huitema/develop
...
Fixing the select and poll event loops for Windows
2017-03-26 10:20:48 -05:00
huitema
6f0b08a400
Fixing the select event loop so it does not give up for naked timers in Windows.
...
Making sure the poll event loop works on windows.
Fixing the poll event loop so it does not give up for naked timers in Windows.
2017-03-26 10:07:44 -05:00
Willem Toorop
b7d16e3c89
One more leak
2017-03-25 17:00:02 -05:00
Willem Toorop
3eb6ebf5e4
Fix memory leak
2017-03-25 21:33:30 +01:00
Willem Toorop
5f6e47d091
Only equip with peer cert when transport is TLS
2017-03-25 21:26:05 +01:00
Willem Toorop
a2efd8f6c1
Report peer certificate in call_reporting
2017-03-25 19:36:20 +01:00
Willem Toorop
5d12545391
Bugfix in handling UDP backing off
2017-03-22 10:52:55 +01:00
Willem Toorop
fe446a0d66
Minor fixes
2017-03-20 23:17:44 +01:00
wtoorop
52e3d2e1b0
Merge pull request #265 from saradickinson/feature/new_settings
...
Feature/new settings
2017-03-20 22:25:52 +01:00
Willem Toorop
0891e16147
Pend netreqs when out of filedescriptors
2017-03-20 15:20:17 +01:00
Sara Dickinson
6f7bad5d73
Add new configuration parameters for TLS back off time and connection retries
2017-03-17 17:26:18 +00:00
Sara Dickinson
dd76132a92
Implement round robin for UDP. Not sure this is the best option though. Noticed it results in more timeouts if one resolver isn't responding because it is retried more frequently. Willem - please review.
2017-03-17 17:16:14 +00:00
Sara Dickinson
1d4e3dd790
Update the name of the new option to 'round_robin_upstreams'
2017-03-17 16:53:03 +00:00
Sara Dickinson
6734a00d59
Improve the logging
2017-03-17 11:25:47 +00:00
Sara Dickinson
f0f3c43552
- Add a new mode where for TLS (and infact TCP too) the upstream selection simply cycles over all the upstreams rather than treating them as an ordered list and always using the first open one.
...
- Make IP field in debug output fixed width
- Collect all the one line config options at the top of the stubby.conf file to make it easier to read
2017-03-16 14:51:46 +00:00
Willem Toorop
14c9f3aafc
Track netreqs "in flight"
2017-03-14 17:17:56 +01:00
Willem Toorop
639239f45c
Schedule dnsreqs with absolute timeout/expiry time
2017-03-13 14:20:47 +01:00
Willem Toorop
bbd2fb8cf0
Although safe, a bit scary
2017-02-27 14:30:44 -08:00
Sara Dickinson
ebdf657fd7
Change pins for IPv6 addresses for Sinodun privacy servers!
...
Improve logging of auth failure
2017-02-23 16:48:16 +00:00
Sara Dickinson
ff4ecd5b39
Couple of extra output messages so Stubby users in strict mode know why the authentication failed
2017-02-23 15:38:45 +00:00
Sara Dickinson
1b7aef5a88
Add a new GETDNS_RETURN code for the case where no upstream is considered valid and hence a query cannot even be scheduled. Only applies when using purely stateful transports. This can happen when using Stubby if there are problems with connections to upstreams.
2017-02-23 14:49:17 +00:00
Willem Toorop
ba7dfbeec0
Misplaced event clear in stub.c
2017-02-18 15:56:06 +01:00
Willem Toorop
74b1f77357
Cancel get validation chain getdns_dns_reqs
...
And miscellaneous little other scheduling fixes and optimizations
2017-02-18 13:16:25 +01:00
Willem Toorop
7bf953b2bd
Merge branch 'huitema-develop' into develop
2017-01-18 12:00:33 +01:00
Christian Huitema
f1b8b25afa
Implementation of basic MDNS support
2016-12-22 15:51:47 -08:00
Willem Toorop
80219a4195
Merge branch 'bugfix/replace__FUNCTION__' into bugfix/1.1.0-alpha3/replace__FUNCTION__
2016-12-12 14:20:31 +01:00
Willem Toorop
5f6b93f7f2
Use __func__ var when supported
...
And let debugging messages compile with -Wpedantic -Werror too
2016-12-12 13:55:10 +01:00
Sara Dickinson
83a0b944b5
Fix another stupid error....
2016-12-11 17:10:44 +00:00
Sara Dickinson
cfc7d18c85
Ug. Fix stupid mistake with string array.
2016-12-11 16:57:52 +00:00
Sara Dickinson
ef12b0e764
Fix some compiler warnings on OS X
2016-12-09 17:15:28 +00:00
Sara Dickinson
7b58dc25a6
- Fix bug where a self signed cert + only a pinset would not authenticate
...
- Add OARC servers with pinset only to stubby.conf
- Move Authentication strings to types_internal for use in call_debugging
- Add connection counts to call_debugging
-
2016-12-09 17:03:41 +00:00
Willem Toorop
37cced78fc
Merge branch 'develop' into release/1.1.0-alpha3
2016-12-09 13:27:55 +01:00
Willem Toorop
5cc67ff554
Merge branch 'develop' into merge-develops
2016-12-09 12:05:42 +01:00
Willem Toorop
6e9b1b5f53
One more unused when no TCP_FASTOPEN
2016-12-08 23:25:53 +01:00
Willem Toorop
f31b2fa233
Merge branch 'develop' into release/1.1.0-alpha3
2016-12-08 15:06:25 +01:00
Willem Toorop
473da8966b
Library fixed for CFLAGS=-Wextra
2016-12-08 14:05:58 +01:00
Christian Huitema
50b064a292
Fixing potential clipping of idle_timeout value in call to upstream_reschedule_events
2016-12-07 15:40:24 -08:00
Sara Dickinson
691d32cf80
Improve README entry on stubby. Add a link to dnsprivacy.org (Willem - is this set up yet?)
...
Add sample Strict config file into the source with a pointer from the README. Not sure about installing this yet as opportunistic seems a better default...?
2016-12-06 15:59:40 +00:00
Sara Dickinson
471e8725e2
Change the default profile for Stubby to use TLS then UDP/TCP
...
- this will only try over TLS a few times before backing off to clear text
- but makes the default for Stubby opportunistic privacy (Willem - WDYT?)
Also use padding and ECS privacy by default for Stubby.
More debugging to help users when there are failures or fallbacks.
Also remove a few help options from Stubby that don't apply
Add -v to output version on getdns_query/stubby
2016-12-06 14:44:40 +00:00
Christian Huitema
dee33f53b6
Reminder of changes required by the Windows port. This solves the issues 228, 229, 230 and 232.
2016-12-05 11:38:59 -08:00
Sara Dickinson
576e38977f
More logging changes to stubby to correctly report profile, transport and stats for TCP and UDP when used as fallbacks.
...
Reporting UDP stats every 100 responses or timeouts to give user some indication UDP is being used.
2016-12-05 18:05:04 +00:00
Sara Dickinson
b0e5f87984
Minor logging updates
2016-11-13 13:14:03 +09:00
Sara Dickinson
1593129b85
Fix mishandling of auth state for name mismatch
2016-11-09 16:41:40 +00:00
Sara Dickinson
a0ae9130cc
Fix issue with session re-use making authentication appear to fail
2016-10-21 14:18:24 +01:00
Sara Dickinson
f156f2f24a
Had to change some preprocessor checks to get all the options to compile
2016-08-08 17:07:46 +01:00
Sara Dickinson
6f9bfffe9f
Catch another error path for failed connections
2016-08-08 16:12:33 +01:00
Sara Dickinson
fdbefa17ec
Add timer for back off on upstream (use 1 hr). Reset as new upstream when re-instated.
2016-08-05 17:25:27 +01:00
Sara Dickinson
a1461d51ec
Add abbreviated logging mode for daemon
2016-08-05 14:10:55 +01:00
Sara Dickinson
0432fe37c4
Tinker with upstream keepalive
2016-08-04 16:10:23 +01:00
Willem Toorop
470fb7a5fb
!0 is not necessarily 1
2016-07-14 11:42:21 +02:00
Willem Toorop
fed4818c27
Fix idle_timeout without keepalive for TLS
2016-07-14 11:03:33 +02:00
Sara Dickinson
6c73144b50
Minor logging updates
2016-07-13 17:39:26 +01:00
Sara Dickinson
105d7acfa9
Just re-read RFC7858 and realised that TLS does support idle connections without keepalive. It is just TCP that doesn't.
2016-07-04 17:02:18 +01:00
Sara Dickinson
5e1575dabc
Correct the logic for upstream back off
2016-07-04 17:02:18 +01:00
Sara Dickinson
8fa84c836a
Initial re-work of stateful transport selection and timeout/error handling. Also update transport test to avoid timeout.
2016-07-04 17:02:14 +01:00
wtoorop
a435932b04
Features/call reporting timeout ( #1 )
...
* Timed out and canceled netreqs are finished too
* Minor code duplication elemination
* Blah typo
* Embarrassing logic error
2016-06-23 14:02:55 +02:00
Robert Groenenberg
60c6c8d8ca
Fixed build
2016-06-21 13:19:11 +02:00
Robert Groenenberg
3634fff4dd
Return call_reporting info in case of timeout, so that we can see
...
which server did not respond.
2016-06-20 18:39:15 +02:00
Sara Dickinson
c0187a19ea
Quick fix for TLS timeouts not re-using a connection. Better solution is needed.
...
Also minor fixes in getdns_query:
- spurious semicolon (caused build warning)
- build warning for initialised variable
- have getdns_query honour the CLASS in the incoming query
2016-06-15 17:15:13 +01:00
Willem Toorop
490aac1b48
Merge branch 'develop' into features/getdns_service
2016-06-08 10:21:29 +02:00
Willem Toorop
cf675a9284
Add srv_addresses when query was for SRV
...
Moved _getdns_rrset iterators to rr-iter.[ch] in the process
2016-06-07 16:52:10 +02:00
Willem Toorop
e01211d6b4
Debug setting that keeps connections open
2016-05-25 15:57:37 +02:00
Sara Dickinson
5f225d6be3
Add TLS session resumption
2016-05-16 17:41:55 +01:00
Willem Toorop
516f211843
Fire idle timeouts immediately with sync requests
2016-04-13 12:06:51 +02:00
Willem Toorop
57954ad41e
Small bugfix in checking complete requests async
2016-04-11 15:33:08 +02:00
Willem Toorop
da577a463d
set upstream loop to the sync loop for sync reqs
...
And reset to the async loop when sync request was finished, rescheduling the upstream->event.
Note that finished_event is scheduled against the async loop always.
2016-04-11 14:49:44 +02:00