From 54d07af95dea49deabe816bf426154db586df811 Mon Sep 17 00:00:00 2001 From: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com> Date: Tue, 7 Jul 2026 14:08:26 +0200 Subject: [PATCH 1/7] document dnsmasq signals Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com> --- docs/ftldns/signals.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/ftldns/signals.md b/docs/ftldns/signals.md index a14049c3..4a9721e8 100644 --- a/docs/ftldns/signals.md +++ b/docs/ftldns/signals.md @@ -80,3 +80,27 @@ Re-parse ARP/neighbour-cache now to update the Network table now ## Real-time signal 7 (42) Scan binary search lookup tables for hash collisions and report if any are found. This is a debugging signal and not meaningful production. Scanning the lookup tables is a time-consuming operation and may stall DNS resolution for a while on low-end devices. + +# `dnsmasq` signals + +`pihole-FTL` passes the following signals through to its embedded `dnsmasq` thread, where they behave as documented in [`man dnsmasq`](https://dnsmasq.org/docs/dnsmasq-man.html). + +## `SIGHUP` + +`dnsmasq`'s behavior with `SIGHUP` is already included in the [`SIGHUP` section above](#reload-everything-using-sighup). + +## `SIGUSR1` + +`SIGUSR1` causes `dnsmasq` to write its cache usage statistics to the log and dump the current cache content (names and addresses). The cache dump output is described in detail on the [cache dump page](cache_dump.md). + +```bash +sudo killall -USR1 pihole-FTL +``` + +## `SIGUSR2` + +When logging directly to a file (configured via [`files.log.dnsmasq`](configfile.md#dnsmasq), default `/var/log/pihole/pihole.log`), `SIGUSR2` causes `pihole-FTL` to close and reopen the log file. This is commonly used for [logrotate](https://github.com/pi-hole/pi-hole/blob/master/advanced/Templates/logrotate). + +```bash +sudo killall -USR2 pihole-FTL +``` From b1e926c4fb019a73c167ceaad050b3a7fea4095b Mon Sep 17 00:00:00 2001 From: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com> Date: Tue, 7 Jul 2026 15:51:27 +0200 Subject: [PATCH 2/7] signals.md: indent all headings by one mkdocs only shows a table of contents if there is a maximum of one first-order heading Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com> --- docs/ftldns/signals.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/ftldns/signals.md b/docs/ftldns/signals.md index 4a9721e8..a0f49333 100644 --- a/docs/ftldns/signals.md +++ b/docs/ftldns/signals.md @@ -1,6 +1,6 @@ You can influence FTL by sending signals to the process. There are various signals supported to trigger specific actions, described below. -# Reload everything using `SIGHUP` +## Reload everything using `SIGHUP` When FTL receives a `SIGHUP`, it clears the entire DNS cache, and then @@ -29,7 +29,7 @@ When FTL receives a `SIGHUP`, it clears the entire DNS cache, and then - The blocking cache (storing if a domain has already been analyzed and what the result was) is cleared. - If `DEBUG_CAPS` is enabled, the current set of available capabilities is logged. -# Real-time (RT) signals +## Real-time (RT) signals While `SIGHUP` updates/flushes almost everything, such a massive operation is often not necessary. Hence, we added several small real-time signals available for fine-grained control of what FTL does. When you see `SIGHUP` as a "big gun", the real-time signals are rather the "scalpel" to serve rather specific needs. @@ -39,7 +39,7 @@ Real-time signals are not guaranteed to have the same number on all operating sy sudo pkill -SIG35 pihole-FTL ``` -## Real-time signal 0 (35) +### Real-time signal 0 (35) This signal does: @@ -53,43 +53,43 @@ The most important difference to `SIGHUP` is that the DNS cache itself is **not* This is the preferred signal to be used after manipulating the `gravity.db` database manually as it reloads only what is needed in this case. -## Real-time signal 1 (36) +### Real-time signal 1 (36) *Reserved* - Currently ignored -## Real-time signal 2 (37) +### Real-time signal 2 (37) *Reserved* - Used for internal signaling that a fork or thread crashed and needs to inform the main process to shut down, storing the last (valid) queries still into the long-term database. -## Real-time signal 3 (38) +### Real-time signal 3 (38) Reimport alias-clients from the database and recompute affected client statistics. -## Real-time signal 4 (39) +### Real-time signal 4 (39) Re-resolve all clients and forward destination hostnames. This forces refreshing hostnames as in that the usual "resolve only recently active clients" condition is ignored. The re-resolution adheres to the specified `REFRESH_HOSTNAMES` config option meaning that this option may not try to resolve all hostnames. -## Real-time signal 5 (40) +### Real-time signal 5 (40) Re-parse ARP/neighbour-cache now to update the Network table now -## Real-time signal 6 (41) +### Real-time signal 6 (41) *reserved* - Signal used internally to terminate the embedded `dnsmasq`. Please do not use this signal to prevent misbehaviour. -## Real-time signal 7 (42) +### Real-time signal 7 (42) Scan binary search lookup tables for hash collisions and report if any are found. This is a debugging signal and not meaningful production. Scanning the lookup tables is a time-consuming operation and may stall DNS resolution for a while on low-end devices. -# `dnsmasq` signals +## `dnsmasq` signals `pihole-FTL` passes the following signals through to its embedded `dnsmasq` thread, where they behave as documented in [`man dnsmasq`](https://dnsmasq.org/docs/dnsmasq-man.html). -## `SIGHUP` +### `SIGHUP` `dnsmasq`'s behavior with `SIGHUP` is already included in the [`SIGHUP` section above](#reload-everything-using-sighup). -## `SIGUSR1` +### `SIGUSR1` `SIGUSR1` causes `dnsmasq` to write its cache usage statistics to the log and dump the current cache content (names and addresses). The cache dump output is described in detail on the [cache dump page](cache_dump.md). @@ -97,7 +97,7 @@ Scan binary search lookup tables for hash collisions and report if any are found sudo killall -USR1 pihole-FTL ``` -## `SIGUSR2` +### `SIGUSR2` When logging directly to a file (configured via [`files.log.dnsmasq`](configfile.md#dnsmasq), default `/var/log/pihole/pihole.log`), `SIGUSR2` causes `pihole-FTL` to close and reopen the log file. This is commonly used for [logrotate](https://github.com/pi-hole/pi-hole/blob/master/advanced/Templates/logrotate). From f2b5310f19864489f2896732c73b45a08187ee45 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 10:02:38 +0000 Subject: [PATCH 3/7] Bump actions/stale in the github_action-dependencies group Bumps the github_action-dependencies group with 1 update: [actions/stale](https://github.com/actions/stale). Updates `actions/stale` from 10.3.0 to 10.4.0 - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899...1e223db275d687790206a7acac4d1a11bd6fe629) --- updated-dependencies: - dependency-name: actions/stale dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github_action-dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/stale_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale_pr.yml b/.github/workflows/stale_pr.yml index 632dcf1f..4024bc89 100644 --- a/.github/workflows/stale_pr.yml +++ b/.github/workflows/stale_pr.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 #v10.3.0 + - uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 #v10.4.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} # Do not automatically mark PR/issue as stale From 51f4140322aa277b36d282e5e6fd158144c19487 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2026 10:02:29 +0000 Subject: [PATCH 4/7] Bump actions/setup-node in the github_action-dependencies group Bumps the github_action-dependencies group with 1 update: [actions/setup-node](https://github.com/actions/setup-node). Updates `actions/setup-node` from 6.4.0 to 7.0.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: github_action-dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0db66e34..b9787236 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: cache: pip - name: Set up Node.js - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #v7.0.0 with: node-version: "${{ env.NODE }}" cache: npm From 4e7b4c6d50eb67de5dd1da2c8157942fab31d7f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2026 11:24:29 +0000 Subject: [PATCH 5/7] build(deps-dev): bump markdownlint-cli2 Bumps the npm-dependencies group with 1 update in the / directory: [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2). Updates `markdownlint-cli2` from 0.23.0 to 0.23.1 - [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md) - [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.23.0...v0.23.1) --- updated-dependencies: - dependency-name: markdownlint-cli2 dependency-version: 0.23.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 50 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d41fb86..a2fad6a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "CC-BY-SA-4.0", "devDependencies": { "linkinator": "^7.6.1", - "markdownlint-cli2": "0.23.0" + "markdownlint-cli2": "0.23.1" } }, "node_modules/@nodelib/fs.scandir": { @@ -434,9 +434,9 @@ } }, "node_modules/globby": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", - "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.1.tgz", + "integrity": "sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==", "dev": true, "license": "MIT", "dependencies": { @@ -488,9 +488,9 @@ } }, "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", "dev": true, "license": "MIT", "engines": { @@ -592,9 +592,9 @@ } }, "node_modules/js-yaml": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.0.tgz", - "integrity": "sha512-YeLUMlvR4Ou1B119LIaM0r65JvbOBooJDc9yEu0dClb/uSC5P4FrLU8OCCz/HXWvtPoIrR0dRzABTjo1sTN9Bw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.1.tgz", + "integrity": "sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==", "dev": true, "funding": [ { @@ -704,9 +704,9 @@ } }, "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, "funding": [ { @@ -721,8 +721,8 @@ "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -732,9 +732,9 @@ } }, "node_modules/markdownlint": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.0.tgz", - "integrity": "sha512-xMUI3ChBuRuxuLF4ENvCZyS8z/+Jly1coUcZwErKLIB3sDj7ojpaTBa1e9YVPhSN4jGEIjYGQCldbTJS/hqS+A==", + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz", + "integrity": "sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==", "dev": true, "license": "MIT", "dependencies": { @@ -756,18 +756,18 @@ } }, "node_modules/markdownlint-cli2": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.0.tgz", - "integrity": "sha512-1nmgQmU/ZTMRVwYCDs7i1HI3zfBISnT2NNRv+9V01oOLZbAtqL+a7tldpPhBWBVBten3FqhMCGV6EUh9McqutQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.1.tgz", + "integrity": "sha512-20JPI5W+HpV1OA+pUM712wgvL4GzYNUvbmhLU8KlEYJ1kCDx4soZ4/Xqd+WkLrPTOKMAn8SfO3zYFrK8GLlwQg==", "dev": true, "license": "MIT", "dependencies": { - "globby": "16.2.0", - "js-yaml": "5.2.0", + "globby": "16.2.1", + "js-yaml": "5.2.1", "jsonc-parser": "3.3.1", "jsonpointer": "5.0.1", - "markdown-it": "14.2.0", - "markdownlint": "0.41.0", + "markdown-it": "14.3.0", + "markdownlint": "0.41.1", "markdownlint-cli2-formatter-default": "0.0.6", "micromatch": "4.0.8", "smol-toml": "1.7.0" diff --git a/package.json b/package.json index b2b3183f..4e156605 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,6 @@ }, "devDependencies": { "linkinator": "^7.6.1", - "markdownlint-cli2": "0.23.0" + "markdownlint-cli2": "0.23.1" } } From 0dae187103fba7e736280d5e2168acdaa8349705 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2026 11:27:13 +0000 Subject: [PATCH 6/7] build(deps): bump mkdocs-material Bumps the pip-dependencies group with 1 update in the / directory: [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `mkdocs-material` from 9.7.6 to 9.7.7 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.7.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: pip-dependencies ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a31af49d..e2efff0a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ mkdocs==1.6.1 mkdocs-git-revision-date-localized-plugin==1.5.3 -mkdocs-material==9.7.6 +mkdocs-material==9.7.7 mkdocs-redirects==1.2.3 markdown-include==0.8.1 From a198f7e7a3d391a77b9be8904040f1d846c68a06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 21:42:12 +0000 Subject: [PATCH 7/7] build(deps-dev): bump brace-expansion Bumps the npm_and_yarn group with 1 update in the / directory: [brace-expansion](https://github.com/juliangruber/brace-expansion). Updates `brace-expansion` from 5.0.4 to 5.0.7 - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.4...v5.0.7) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 5.0.7 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2fad6a7..63f70dc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -126,9 +126,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "dev": true, "license": "MIT", "dependencies": {