CARVIEW |
Select Language
HTTP/2 302
date: Sat, 19 Jul 2025 16:46:40 GMT
content-length: 0
location: https://github.com/NLnetLabs/unbound/pull/255
server-timing: nginx;desc="NGINX";dur=0.465077,glb;desc="GLB";dur=94.578155
x-voltron-version: fd8fbbc
vary: Accept-Encoding, Accept, X-Requested-With
server: github.com
x-frame-options: DENY
strict-transport-security: max-age=31536000; includeSubDomains; preload
set-cookie: _gh_sess=FoArlteuut%2BqEkad8yKqvPQv2bqGqKskjZQ35UQL%2BrPkBC1B4utK%2F%2FJpBst8eSRrzW3AgCrEQmqkHc2hyp5TPes4PD8oHfGz334Q%2BWaQOArXkCO8LGzkWaeUNppgb7HkOiTg26dvsKfergUqvAHdtaJtZ6UI9oeYNkZkJbjByDyPb%2FwowUeTytG1z7Sc4nlYJUiFF1tlo73vMX9NIdrzmMJiAGW4wJXknL6tAnjcK4TVpeU0V43lrAryWH6iTqs2dr37xJtQWLJfZTVOey0Hyg%3D%3D--q99ZsOsr0VeDRL4v--OxU%2B3V6yHHsb29nOSDrjag%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.771008793.1752943600; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 16:46:40 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 16:46:40 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: CEF4:A6D5E:2DDCCD:3916D4:687BCBF0
HTTP/2 200
date: Sat, 19 Jul 2025 16:46:42 GMT
content-type: text/html; charset=utf-8
cache-control: no-cache
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
referrer-policy: no-referrer-when-downgrade
server-timing: pull_request_layout-fragment;desc="pull_request_layout fragment";dur=302.371926,conversation_content-fragment;desc="conversation_content fragment";dur=1176.87966,conversation_sidebar-fragment;desc="conversation_sidebar fragment";dur=329.723579,nginx;desc="NGINX";dur=1.214619,glb;desc="GLB";dur=94.997573
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: fd8fbbc
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
x-github-request-id: CEF4:A6D5E:2DDD00:39170B:687BCBF0
Add downstream DNS-over-HTTPS support to Unbound by ralphdolmans · Pull Request #255 · NLnetLabs/unbound · GitHub
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 396
Add downstream DNS-over-HTTPS support to Unbound #255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Add configurable limits for http-query-buffer-size and http-response-buffer-size - Make http endpoint, max_streams, and TCP_NODELAY for HTTP sockets configurable.
testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test
Outdated
Show resolved
Hide resolved
wcawijngaards
approved these changes
Aug 14, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice code! Review completed and approved. I am fine with merging this branch.
8 tasks
Wouter Wijngaards writes:
+#define HTTP_QUERY_PARAM "?dns="
+ size_t el = strlen(h2_session->c->http_endpoint);
+ size_t qpl = sizeof(HTTP_QUERY_PARAM) - 1;
I did not know that sizeof a literal is strlen. Thanks for the education, not sure what is better code then.
Note that they are not equivalent:
cat size.c
#include <stdio.h>
#include <string.h>
int main() {
printf( "sizeof %lu\n", sizeof("hallo world"));
printf( "strlen %lu\n", strlen("hallo world"));
}
[jaap@bela /tmp]$ cc size.c
[jaap@bela /tmp]$ ./a.out
sizeof 12
strlen 11
I'm not sure what you really want here.
jaap
|
@Jakker , correct sizeof is the size needed to store the string literal, so including null byte. Hence the -1 in the code. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
You can’t perform that action at this time.
In order to use the DoH feature, Unbound needs to be compiled with the nghttp2 library (./configure --with-libnghttp2) and requires an OpenSSL version that supports ALPN for the HTTP/2 support negotiation (starting from OpenSSL 1.0.2).
The DoH implementation requires an encrypted connection, and only works over HTTP/2 as query pipelining and out-of-order processing using HTTP/2 streams is needed to be able to provide performance that is on par with DNS-over-TLS.
To enable DoH in Unbound the certificate and corresponding key to use need to be configured, and Unbound needs to listen on the HTTPS port:
The HTTPS port (default 443) can be changed using the 'https-port' configuration option.
The DoH endpoint (default /dns-query) can be changed using the 'http-endpoint' configuration option.
The maximum number of streams (default 100, as per HTTP/2 RFC) can be adjusted using the 'http-max-streams' configuration option.
In order to prevent abuse of Unbound servers running DoH, this PR adds counters to limit the total size of buffers used to store (partial) DNS queries and responses. The size of these limits can be adjusted using the 'http-query-buffer-size' and 'http-response-buffer-size' configuration options.
In order to provide a well-performing HTTP/2 service is might be good to set the TCP_NODELAY socket option. This PR will, by default, set this option for the sockets used for the HTTP/2 connection. Setting this option can be disabled using the 'http-nodelay' configuration option.
Three DoH stats are added to Unbound; 'num.query.https' keeps statistics for the number of queries that are serviced using DoH. The 'mem.http.query_buffer', and 'mem.http.response_buffer' stats keep track of the memory used for the query and response buffers used for DoH.