]> git.ipfire.org Git - thirdparty/knot-resolver.git/log
thirdparty/knot-resolver.git
4 years agoWIP: timeout tweaks
Štěpán Balážik [Thu, 3 Sep 2020 14:36:56 +0000 (16:36 +0200)] 
WIP: timeout tweaks

Set retries to 10 and static forwarding timeout to 2000 ms.

4 years agowip: doc
Štěpán Balážik [Thu, 3 Sep 2020 14:18:36 +0000 (16:18 +0200)] 
wip: doc

4 years agofixup! format: convert to using tabs in new files
Štěpán Balážik [Thu, 3 Sep 2020 12:01:11 +0000 (14:01 +0200)] 
fixup! format: convert to using tabs in new files

4 years agofixup! first buildable version of server selection rewrite
Štěpán Balážik [Thu, 3 Sep 2020 11:53:54 +0000 (13:53 +0200)] 
fixup! first buildable version of server selection rewrite

4 years agoselection: limit timeout from above and edit the test accordingly
Štěpán Balážik [Thu, 3 Sep 2020 10:39:03 +0000 (12:39 +0200)] 
selection: limit timeout from above and edit the test accordingly

4 years agoselection: set default timeout to 400 ms
Štěpán Balážik [Thu, 3 Sep 2020 10:09:47 +0000 (12:09 +0200)] 
selection: set default timeout to 400 ms

This lowers number of timeouts on unknown zones.

4 years agoselection: support custom port when forwarding
Štěpán Balážik [Thu, 3 Sep 2020 08:49:34 +0000 (10:49 +0200)] 
selection: support custom port when forwarding

4 years agoformat: convert to using tabs in new files
Štěpán Balážik [Tue, 1 Sep 2020 08:04:29 +0000 (10:04 +0200)] 
format: convert to using tabs in new files

4 years agoselection_iter: only update state for ;valid addresses
Štěpán Balážik [Tue, 1 Sep 2020 08:02:12 +0000 (10:02 +0200)] 
selection_iter: only update state for ;valid addresses

4 years agoselection: no need to track current zonecut in iter_local_state
Štěpán Balážik [Tue, 1 Sep 2020 08:00:20 +0000 (10:00 +0200)] 
selection: no need to track current zonecut in iter_local_state

4 years agoselection: rename *_state_init to *_state_alloc
Štěpán Balážik [Tue, 1 Sep 2020 07:58:43 +0000 (09:58 +0200)] 
selection: rename *_state_init to *_state_alloc

4 years agoselection: fix reporting of deduplicated packet
Štěpán Balážik [Tue, 1 Sep 2020 07:55:06 +0000 (09:55 +0200)] 
selection: fix reporting of deduplicated packet

4 years agoselection: fix TLS forwarding
Štěpán Balážik [Sat, 29 Aug 2020 16:32:01 +0000 (18:32 +0200)] 
selection: fix TLS forwarding

4 years agoRevert "WIP: change scan-build error number due to error in stats"
Štěpán Balážik [Sat, 29 Aug 2020 16:10:00 +0000 (18:10 +0200)] 
Revert "WIP: change scan-build error number due to error in stats"

This reverts commit e9ba1cd4826942f2ef4b2f326c0a8d7bc5032f24.

4 years agofixup! fix various mistakes found by static analysis
Štěpán Balážik [Sat, 29 Aug 2020 16:08:16 +0000 (18:08 +0200)] 
fixup! fix various mistakes found by static analysis

4 years agodoc: rename nsrep to selection
Štěpán Balážik [Sat, 29 Aug 2020 15:59:50 +0000 (17:59 +0200)] 
doc: rename nsrep to selection

4 years agoWIP: change scan-build error number due to error in stats
Štěpán Balážik [Sat, 29 Aug 2020 15:57:40 +0000 (17:57 +0200)] 
WIP: change scan-build error number due to error in stats

4 years agofix various mistakes found by static analysis
Štěpán Balážik [Sat, 29 Aug 2020 15:31:41 +0000 (17:31 +0200)] 
fix various mistakes found by static analysis

4 years agoselection: also cache timeouts as part of the global cache
Štěpán Balážik [Sat, 29 Aug 2020 14:04:30 +0000 (16:04 +0200)] 
selection: also cache timeouts as part of the global cache

4 years agoselection: shuffle before choosing
Štěpán Balážik [Sat, 29 Aug 2020 13:09:35 +0000 (15:09 +0200)] 
selection: shuffle before choosing

this ensures fair distribution of queries after resolver start
e.g. in priming

4 years agoselection: fix race condition when updating rtt cache
Štěpán Balážik [Sat, 29 Aug 2020 12:32:57 +0000 (14:32 +0200)] 
selection: fix race condition when updating rtt cache

4 years agoselection: exponential back off after timeout
Štěpán Balážik [Sat, 29 Aug 2020 12:30:06 +0000 (14:30 +0200)] 
selection: exponential back off after timeout

4 years agonsrep: count timeouts per query
Štěpán Balážik [Sat, 29 Aug 2020 12:13:38 +0000 (14:13 +0200)] 
nsrep: count timeouts per query

4 years agofirst buildable version of server selection rewrite
Štěpán Balážik [Fri, 20 Mar 2020 18:43:11 +0000 (19:43 +0100)] 
first buildable version of server selection rewrite

4 years agoMerge branch '251-warn-if-static-unmanaged-key-is-used' into 'master' obs-knot-dns-deve-jq0xxt/deployments/1175 obs-knot-resolver-es11k1/deployments/1174
Tomas Krizek [Thu, 15 Oct 2020 11:17:08 +0000 (13:17 +0200)] 
Merge branch '251-warn-if-static-unmanaged-key-is-used' into 'master'

Resolve "warn if static (unmanaged) key is used"

Closes #251

See merge request knot/knot-resolver!1051

4 years agomodules/ta_update: improve warning message
Lukáš Ježek [Tue, 13 Oct 2020 09:13:00 +0000 (11:13 +0200)] 
modules/ta_update: improve warning message

4 years agomodules/ta_update nitpick: don't call os.time() again
Vladimír Čunát [Thu, 13 Aug 2020 11:42:40 +0000 (13:42 +0200)] 
modules/ta_update nitpick: don't call os.time() again

4 years agotests: replace the deprecated -f parameter
Vladimír Čunát [Mon, 5 Oct 2020 17:44:16 +0000 (19:44 +0200)] 
tests: replace the deprecated -f parameter

4 years agomodules/ta_update: warn if there are differences between statically configured keys...
Lukáš Ježek [Tue, 25 Aug 2020 10:03:10 +0000 (12:03 +0200)] 
modules/ta_update: warn if there are differences between statically configured keys and upstream

4 years agota_update: rfc5011 test: fix knotd startup
Lukáš Ježek [Fri, 14 Aug 2020 09:50:05 +0000 (11:50 +0200)] 
ta_update: rfc5011 test: fix knotd startup

4 years agota_update: rfc5011 test: removing the missing -r parameter for dnssec-tools
Lukáš Ježek [Fri, 14 Aug 2020 09:28:40 +0000 (11:28 +0200)] 
ta_update: rfc5011 test: removing the missing -r parameter for dnssec-tools

4 years agoMerge branch 'doh-module-c' into 'master' obs-knot-dns-deve-jq0xxt/deployments/1164 obs-knot-dns-deve-jq0xxt/deployments/1168 obs-knot-resolver-es11k1/deployments/1165 obs-knot-resolver-es11k1/deployments/1169
Lukas Jezek [Tue, 13 Oct 2020 12:23:06 +0000 (14:23 +0200)] 
Merge branch 'doh-module-c' into 'master'

doh2: C implementation of DoH using nghttp2

Closes #600

See merge request knot/knot-resolver!997

4 years agodaemon/http: fix double-free on some pkt send failures
Tomas Krizek [Wed, 7 Oct 2020 13:14:09 +0000 (15:14 +0200)] 
daemon/http: fix double-free on some pkt send failures

When http_write() returns non-zero, worker_submit() performs the task
cleanup and calling on_write() callback only causes double free.

4 years agodoc: update doh/doh2 documentation
Tomas Krizek [Thu, 27 Aug 2020 13:01:00 +0000 (15:01 +0200)] 
doc: update doh/doh2 documentation

4 years agodistro/*: update module-http packaging description
Tomas Krizek [Mon, 5 Oct 2020 14:15:21 +0000 (16:15 +0200)] 
distro/*: update module-http packaging description

4 years agodaemon: add deprecation warning for old DoH implementation
Tomas Krizek [Fri, 2 Oct 2020 11:31:25 +0000 (13:31 +0200)] 
daemon: add deprecation warning for old DoH implementation

4 years agodaemon/http: document unsupported interleaving DATA
Tomas Krizek [Fri, 2 Oct 2020 10:31:32 +0000 (12:31 +0200)] 
daemon/http: document unsupported interleaving DATA

4 years agodaemon/http: replace strchrnul for mac os compatibility
Tomas Krizek [Fri, 2 Oct 2020 08:43:15 +0000 (10:43 +0200)] 
daemon/http: replace strchrnul for mac os compatibility

strchrnul() is a GNU extension that is not available on Mac OS.

4 years agodaemon/http: log connection errors to verbose
Tomas Krizek [Fri, 2 Oct 2020 08:16:30 +0000 (10:16 +0200)] 
daemon/http: log connection errors to verbose

4 years agoluacheck: comment out unused code and variables
Tomas Krizek [Fri, 2 Oct 2020 08:07:07 +0000 (10:07 +0200)] 
luacheck: comment out unused code and variables

4 years agotests/config: doh2 - use tabs for indentation
Tomas Krizek [Fri, 2 Oct 2020 08:02:17 +0000 (10:02 +0200)] 
tests/config: doh2 - use tabs for indentation

4 years agotests/config: modify doh tests for doh2
Tomas Krizek [Thu, 1 Oct 2020 15:07:23 +0000 (17:07 +0200)] 
tests/config: modify doh tests for doh2

Test only supported test-cases. Extend list of lua dependencies
for config tests.

4 years agotests/config: import tests from lua-http doh
Tomas Krizek [Thu, 1 Oct 2020 12:32:59 +0000 (14:32 +0200)] 
tests/config: import tests from lua-http doh

4 years agodaemon/http: make sure uv_handle is always initialized
Tomas Krizek [Thu, 1 Oct 2020 12:09:47 +0000 (14:09 +0200)] 
daemon/http: make sure uv_handle is always initialized

It is later closed in endpoint_close(), which would fail with assert if
not initialized (e.g. when compiled without nghttp2 support and
attempting to use doh2 kind).

4 years agodaemon: make nghttp2 optional
Tomas Krizek [Wed, 30 Sep 2020 12:10:23 +0000 (14:10 +0200)] 
daemon: make nghttp2 optional

4 years agodaemon/http: remove plain HTTP implementation artifacts
Tomas Krizek [Wed, 30 Sep 2020 12:09:32 +0000 (14:09 +0200)] 
daemon/http: remove plain HTTP implementation artifacts

4 years agocontrib/base64: sync with Knot DNS
Tomas Krizek [Fri, 25 Sep 2020 13:35:20 +0000 (15:35 +0200)] 
contrib/base64: sync with Knot DNS

4 years agodistro/tests: test_doh2 run curl test only when needed
Tomas Krizek [Fri, 25 Sep 2020 11:05:34 +0000 (13:05 +0200)] 
distro/tests: test_doh2 run curl test only when needed

4 years agodistro/tests: add tests for new DoH implementation
Jakub Ružička [Fri, 11 Sep 2020 17:33:20 +0000 (19:33 +0200)] 
distro/tests: add tests for new DoH implementation

* one test unsing curl and sha256sum (get_url can't do HTTP/2)
* one test using kdig when correct version is present

4 years agodistro: add new dependency: libnghttp2
Jakub Ružička [Wed, 9 Sep 2020 15:03:00 +0000 (17:03 +0200)] 
distro: add new dependency: libnghttp2

This is needed by new DoH implementation.

4 years agodaemon/io: use MANDATORY_APLN only with new gnutls
Tomas Krizek [Fri, 25 Sep 2020 08:58:08 +0000 (10:58 +0200)] 
daemon/io: use MANDATORY_APLN only with new gnutls

This is only needed to fail early during the handshake, if protocol
negotiation doesn't succeed. With older GnuTLS, if there's a protocol
mismatch, the data won't be understood and the connection will close
later on.

Mandatory ALPN doesn't affect clients that don't use the ALPN extension.

4 years agodaemon/bindings: assign doh2 kind in net.list()
Tomas Krizek [Fri, 11 Sep 2020 10:15:32 +0000 (12:15 +0200)] 
daemon/bindings: assign doh2 kind in net.list()

4 years agoDockerfile: add nghttp2 dependency
Tomas Krizek [Wed, 9 Sep 2020 09:56:14 +0000 (11:56 +0200)] 
Dockerfile: add nghttp2 dependency

4 years agodaemon/http: make lint happy
Tomas Krizek [Wed, 9 Sep 2020 09:34:13 +0000 (11:34 +0200)] 
daemon/http: make lint happy

4 years agodaemon/worker: simplify condition
Tomas Krizek [Tue, 8 Sep 2020 08:53:57 +0000 (10:53 +0200)] 
daemon/worker: simplify condition

4 years agodaemon: decrease write errors severity in log
Tomas Krizek [Wed, 2 Sep 2020 12:32:21 +0000 (14:32 +0200)] 
daemon: decrease write errors severity in log

4 years agodaemon/worker: expose number of write errors
Tomas Krizek [Wed, 2 Sep 2020 12:31:22 +0000 (14:31 +0200)] 
daemon/worker: expose number of write errors

4 years agodaemon/http: improve handling of incomplete streams
Tomas Krizek [Wed, 26 Aug 2020 10:14:48 +0000 (12:14 +0200)] 
daemon/http: improve handling of incomplete streams

4 years agodaemon/worker: ensure ignored queries pop from http stream id queue
Tomas Krizek [Tue, 25 Aug 2020 14:44:14 +0000 (16:44 +0200)] 
daemon/worker: ensure ignored queries pop from http stream id queue

4 years agodaemon/lua: update kres-gen.lua
Tomas Krizek [Mon, 24 Aug 2020 09:42:28 +0000 (11:42 +0200)] 
daemon/lua: update kres-gen.lua

4 years agodaemon/http: ensure on_write is called on failures
Tomas Krizek [Thu, 20 Aug 2020 15:17:52 +0000 (17:17 +0200)] 
daemon/http: ensure on_write is called on failures

4 years agodaemon/http: immediately set handle to write_req in http_write()
Tomas Krizek [Thu, 20 Aug 2020 14:13:43 +0000 (16:13 +0200)] 
daemon/http: immediately set handle to write_req in http_write()

This seems to be safe to do, since libuv handles tcp write in
a very similar way.

4 years agodaemon/http: document header_callback
Tomas Krizek [Thu, 20 Aug 2020 14:13:35 +0000 (16:13 +0200)] 
daemon/http: document header_callback

4 years agodaemon/http: polish send_padding
Tomas Krizek [Thu, 20 Aug 2020 14:13:12 +0000 (16:13 +0200)] 
daemon/http: polish send_padding

4 years agodaemon/http: write correct packet buffer
Tomas Krizek [Thu, 20 Aug 2020 13:03:05 +0000 (15:03 +0200)] 
daemon/http: write correct packet buffer

task->pktbuf isn't the same as the passed in pkt in qr_task_send().
pkt must be used and it must also stay valid as long as the task
lives. This seems to be the case for request answers, as they aren't
freed until there are no more tasks that reference them.

4 years agodaemon/http: refactor sending to use less allocations
Tomas Krizek [Tue, 18 Aug 2020 09:36:22 +0000 (11:36 +0200)] 
daemon/http: refactor sending to use less allocations

4 years agodaemon/http: refactoring - rename session
Tomas Krizek [Mon, 17 Aug 2020 15:46:14 +0000 (17:46 +0200)] 
daemon/http: refactoring - rename session

4 years agodaemon/http: use more distinguishable name for http2 session
Tomas Krizek [Mon, 17 Aug 2020 14:27:43 +0000 (16:27 +0200)] 
daemon/http: use more distinguishable name for http2 session

4 years agodaemon/http: refactor code style
Tomas Krizek [Mon, 17 Aug 2020 14:22:06 +0000 (16:22 +0200)] 
daemon/http: refactor code style

4 years agodaemon/io: use proper struct tls_ctx name
Tomas Krizek [Mon, 17 Aug 2020 11:43:06 +0000 (13:43 +0200)] 
daemon/io: use proper struct tls_ctx name

4 years agodaemon/http: refactor header_callback()
Tomas Krizek [Mon, 17 Aug 2020 11:42:44 +0000 (13:42 +0200)] 
daemon/http: refactor header_callback()

4 years agodaemon/http: rename struct http_ctx
Tomas Krizek [Fri, 14 Aug 2020 12:18:58 +0000 (14:18 +0200)] 
daemon/http: rename struct http_ctx

4 years agodaemon/http: code style changes
Tomas Krizek [Fri, 14 Aug 2020 11:25:05 +0000 (13:25 +0200)] 
daemon/http: code style changes

4 years agodaemon/bindings/net: fix port-based default protocol selection
Tomas Krizek [Fri, 14 Aug 2020 08:53:43 +0000 (10:53 +0200)] 
daemon/bindings/net: fix port-based default protocol selection

4 years agodaemon/http: remove plain HTTP until fully supported
Tomas Krizek [Fri, 14 Aug 2020 08:20:48 +0000 (10:20 +0200)] 
daemon/http: remove plain HTTP until fully supported

4 years agodaemon/io: set proper ALPN for dot and doh
Tomas Krizek [Wed, 12 Aug 2020 11:11:31 +0000 (13:11 +0200)] 
daemon/io: set proper ALPN for dot and doh

4 years agodaemon/http: minor fixes
Tomas Krizek [Tue, 11 Aug 2020 13:59:25 +0000 (15:59 +0200)] 
daemon/http: minor fixes

4 years agodaemon/http: improve buffer handling
Tomas Krizek [Tue, 11 Aug 2020 13:08:18 +0000 (15:08 +0200)] 
daemon/http: improve buffer handling

Fixes GET requests and handles some edge cases.

4 years agodaemon/http: simplify log messages
Tomas Krizek [Tue, 11 Aug 2020 12:16:55 +0000 (14:16 +0200)] 
daemon/http: simplify log messages

4 years agodaemon/http: additional checks for HEADERS processing
Tomas Krizek [Tue, 11 Aug 2020 10:34:20 +0000 (12:34 +0200)] 
daemon/http: additional checks for HEADERS processing

1. We musn't process path for POST method (check there are no DATA
   frames).
2. A GET request may not interefere with an ongoing unfinished data from
   other stream, since we only use a single buffer for the entire conn.

4 years agodaemon/http: copy data before nghttp2_session_send()
Tomas Krizek [Mon, 10 Aug 2020 14:41:54 +0000 (16:41 +0200)] 
daemon/http: copy data before nghttp2_session_send()

4 years agodaemon/http: support multiple subsequent streams in decoded tls data
Tomas Krizek [Fri, 7 Aug 2020 11:54:46 +0000 (13:54 +0200)] 
daemon/http: support multiple subsequent streams in decoded tls data

4 years agodaemon/http: store stream_id per request to support query pipelining
Tomas Krizek [Fri, 7 Aug 2020 11:33:06 +0000 (13:33 +0200)] 
daemon/http: store stream_id per request to support query pipelining

4 years agodoh: adjust endpoint kinds
Tomas Krizek [Fri, 7 Aug 2020 08:16:18 +0000 (10:16 +0200)] 
doh: adjust endpoint kinds

Make "doh2" the DNS-over-HTTPS C implementation and
remove plain HTTP until fully supported.

4 years agodoh: C implementation of DoH - WiP
Jan Hak [Fri, 13 Mar 2020 14:02:50 +0000 (15:02 +0100)] 
doh: C implementation of DoH - WiP

Working server-side GET/POST HTTPS method - Proof-of-Concept
Working server-side GET/POST HTTP/2 method - WiP

4 years agoMerge branch 'packaging-sysusers' into 'master'
Tomas Krizek [Tue, 13 Oct 2020 10:53:19 +0000 (12:53 +0200)] 
Merge branch 'packaging-sysusers' into 'master'

packaging: sysusers and cleanup

See merge request knot/knot-resolver!1080

4 years agodistro/deb: don't use sysusers obs-knot-resolver-bs4hbr/deployments/1160
Tomas Krizek [Mon, 12 Oct 2020 13:51:22 +0000 (15:51 +0200)] 
distro/deb: don't use sysusers

4 years agodistro/rpm: use minimalistic file permissions
Tomas Krizek [Mon, 12 Oct 2020 10:59:18 +0000 (12:59 +0200)] 
distro/rpm: use minimalistic file permissions

Config directory and files within can be created with distro-defaults,
since we only need read permission for this dir.

Other dirs have permissions updated to conform to tmpfiles.d.

4 years agodistro/rpm: don't use sysusers
Tomas Krizek [Mon, 12 Oct 2020 12:45:28 +0000 (14:45 +0200)] 
distro/rpm: don't use sysusers

Only Fedora 32+ and opensuse have sysusers support, but handling centos
would require keeping the current commands. For simplicity's sake, let's
not use sysusers yet for rpm.

https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format
https://en.opensuse.org/openSUSE:Packaging_guidelines#Users_and_Groups

4 years agomeson: fix sysusers/tmpfiles installation
Tomas Krizek [Mon, 12 Oct 2020 12:10:20 +0000 (14:10 +0200)] 
meson: fix sysusers/tmpfiles installation

Target name must be unique in meson, but the installed files share
the same name. To get around this, use a temporary target name and
rename it when installing the file to its proper location.

4 years agodistro/arch: use sysusers instead of install script
Tomas Krizek [Mon, 12 Oct 2020 10:58:42 +0000 (12:58 +0200)] 
distro/arch: use sysusers instead of install script

4 years agosystemd/tmpfiles: change owner back to knot-resolver
Tomas Krizek [Mon, 12 Oct 2020 10:54:03 +0000 (12:54 +0200)] 
systemd/tmpfiles: change owner back to knot-resolver

Since 5.1.3, we no longer drop capabilities as root, thus the
tmpfiles no longer need to be owned by root.

4 years agosystemd: generate sysusers file
Tomas Krizek [Mon, 12 Oct 2020 10:53:00 +0000 (12:53 +0200)] 
systemd: generate sysusers file

4 years agodistro/arch: more cleanup to conform to most PKGBUILDs
Tomas Krizek [Sat, 10 Oct 2020 16:17:31 +0000 (18:17 +0200)] 
distro/arch: more cleanup to conform to most PKGBUILDs

4 years agoMerge !1077: lua kr_table_len: check type of parameter obs-knot-dns-deve-jq0xxt/deployments/1161 obs-knot-resolver-es11k1/deployments/1162
Vladimír Čunát [Mon, 12 Oct 2020 06:05:40 +0000 (08:05 +0200)] 
Merge !1077: lua kr_table_len: check type of parameter

4 years agolua: kr_table_len checks type of parameter
Lukáš Ježek [Fri, 9 Oct 2020 07:43:29 +0000 (09:43 +0200)] 
lua: kr_table_len checks type of parameter

4 years agoMerge branch 'cachelock-fix' into 'master' obs-knot-dns-deve-jq0xxt/deployments/1150 obs-knot-dns-deve-jq0xxt/deployments/1152 obs-knot-dns-deve-jq0xxt/deployments/1155 obs-knot-resolver-es11k1/deployments/1151 obs-knot-resolver-es11k1/deployments/1153 obs-knot-resolver-es11k1/deployments/1154
Petr Špaček [Fri, 9 Oct 2020 12:01:54 +0000 (14:01 +0200)] 
Merge branch 'cachelock-fix' into 'master'

cache lock fixes

See merge request knot/knot-resolver!1078

4 years agolib/cache: rename lock file to krcachelock so it shows up in regular ls
Petr Špaček [Fri, 9 Oct 2020 09:31:55 +0000 (11:31 +0200)] 
lib/cache: rename lock file to krcachelock so it shows up in regular ls

4 years agolib/cache: do not unlink cache lock file
Petr Špaček [Fri, 9 Oct 2020 09:30:56 +0000 (11:30 +0200)] 
lib/cache: do not unlink cache lock file

This change serves two purposes:
- removes corner case where lock is deleted and created by another
  instance
- prevents incredibly rare problem where filesystem inodes run out

Beware that lock file is still not created on start-up.
It gets created only when emergency cache clear is executed and stays there.

We might consider creating the file at start-up as well
but that's topic for another MR.

4 years agolib/cache: fix cache lock based on fcntl()
Petr Špaček [Fri, 9 Oct 2020 09:29:23 +0000 (11:29 +0200)] 
lib/cache: fix cache lock based on fcntl()

Fixes bug introduced in b65e8977566be831c0308390b70fc2151f40e4e7.
open() was creating a file which could not be open again because of
insufficient permissions. This somehow worked because lockfile_release()
unlinks the file, but it broke terribly if lockfile_release() was not
called because of crash or something like that.

Fixes: merge request knot/knot-resolver!1042