Commit Graph

89 Commits

Author SHA1 Message Date
DL6ER 1ccfd9a081 Ensure the API does not try to create DNS cache records for queries that don't have one
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-08-20 15:27:38 +02:00
DL6ER ff30d4a973 Log memory access error details even when no debug flag is set
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-08-20 15:20:55 +02:00
DL6ER 15942b17ce Store domainlist IDs for blocked/permitted queries
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-08-19 19:44:11 +02:00
DL6ER 613014e81a Merge branch 'development' into new/query_special_domain
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-04-24 09:26:46 +02:00
DL6ER 7acd0f31e4 Add QUERY_SPECIAL_DOMAIN as new query status
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-04-24 09:10:38 +02:00
Adam Warner 671a438c4d Fix some spellings, ignore others
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2022-04-22 18:26:31 +01:00
DL6ER 2e479f6a8c Merge pull request #1286 from stuXORstu/tweak/domainid_perf
performance improvements for findDomainID()
2022-02-08 20:31:21 +01:00
stuXORstu 8410af394a Updates for tweak/domainid_perf to implement better hash based comparisions
Signed-off-by: stuXORstu <stuxorstu@gmail.com>
2022-02-06 12:34:08 +00:00
DL6ER c1009ba0ec Print FTL regex extension details in regex-test mode
Signed-off-by: DL6ER <dl6er@dl6er.de>
2022-01-22 13:29:15 +01:00
DL6ER ff34a0c84b Add DNSMASQ_WARN message type whenever dnsmasq logs a warning. Also, do not flush the message table on reload (but only on restart) so that config-related (i.e. one-time) warnings are not accidentally deleted.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-11-13 10:28:59 +01:00
DL6ER ac0346b9e2 Improvements based on static-analysis of source code
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-09-23 20:24:57 +02:00
DL6ER 127860e195 Merge pull request #1156 from pi-hole/tweak/blocking_while_busy
Customizable locking while database is busy
2021-08-23 20:19:36 +02:00
DL6ER f73c9d2907 Remove redundant upstream->count
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-08-22 11:58:51 +02:00
DL6ER d57311e56f Allow users to configure how FTL reacts to queries when the gravity database is not available
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-08-18 11:41:16 +02:00
DL6ER 82780ecca0 Add additional checks for validity of data before trying to access it. Fixes #1151
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-07-24 12:39:48 +02:00
DL6ER f0f6b1de6f Further reduce memory footprint of FTL by about 12%. We don't store the char pointer of the extended DNS errors because we can get this at any time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-07-02 18:02:21 +02:00
DL6ER a4005d8cc6 Merge branch 'development' into update/dnsmasq-v2.86
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-06-22 09:53:56 +02:00
DL6ER e1bad8504c Improve flags debugging
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-06-16 23:17:47 +02:00
DL6ER f72962c1f6 Give threads a bit more time to reach a point where cancellation is safe. We cannot give them too much time because, otherwise, the proces trying to TERMinate FTL may decide to KILL it instead. We should avoid this to be able to properly cleanup.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-04-18 11:09:52 +02:00
DL6ER de7c2919c9 Simplify status and reply type handling in FTL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-04-06 20:01:47 +02:00
DL6ER 0795cf6209 Open individual database connections where we need them. Do not use global pointers anywhere. This may mean we have more than one connection open at the sae time. SQLite3 will take care of thread-safety.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-20 20:21:09 +00:00
DL6ER 7fdc926f32 Do not close FTL database connection when forking TCP workers
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-03-19 16:03:34 +00:00
DL6ER 67801b8383 Resize shared memory only when locking. This ensures all shm pointers are invariant inside locks.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-02-21 10:00:16 +01:00
DL6ER dd773b0d2f Fix queries sent upstream being counted incorrectly when modified later on (blocked externally, blocked during CNAME inspection). This also applies to queries loaded from the database.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-02-13 16:57:13 +01:00
DL6ER deae66ba58 Optimize datastructures using bitfields and item re-arrangement (to minimize padding). This reduces the size of query, client, and regex records by 8 bytes per item. Note that this optimization was done on x86_64 and may not apply for other architectures (32bit architectures already used less padding).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2021-01-17 13:06:16 +01:00
DL6ER 21537822cb Merge pull request #999 from pi-hole/new/iface_change_same_IP
Detect and handle interface changes of clients with the same IP
2021-01-14 20:55:30 +01:00
DL6ER 51bbaad6ea Add new query types SVCB and HTTPS
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-31 10:33:28 +01:00
DL6ER fcd9228f20 Detect and handle interface changes of clients with the same IP
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-24 10:43:23 +01:00
DL6ER 5cca201338 Don't iterate over all clients every minute trying to find new ones but only do this when the RESOLVE_NEW_HOSTNAMES event is set
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-23 14:38:06 +01:00
DL6ER 4cd935309e Merge pull request #969 from pi-hole/tweak/interruptsafe_systemcalls
Implement interrupt-safe systemcalls
2020-12-21 10:05:03 +01:00
DL6ER 0e0899691f Add more debugging output for domain reloading (on receipt of SIGHUP)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-10 23:33:09 +01:00
DL6ER 7459d8235b Rename memory.c -> syscalls.c
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-09 20:21:03 +01:00
DL6ER 99a07ba57a Rename super-clients ---> alias-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-15 19:09:48 +01:00
DL6ER 6f6ae518d2 Merge branch 'development' into new/super-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-15 08:47:44 +01:00
DL6ER 7b0ab09b74 Make FTL upstream destination port-aware
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-13 00:16:55 +01:00
DL6ER b7fe809467 Reopening the FTL database may lead to rare race-collisions in SQLite3. We avoid them by keeping the database connection open all the time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-27 23:35:44 +02:00
DL6ER 196fca38ff Merge branch 'development' into new/super-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-21 23:28:57 +02:00
DL6ER 00bd54aead Only try to resolve host names of upstream servers which were recently active. The current limit for "recently active" is hard-coded to two hours.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-24 20:39:41 +02:00
DL6ER 69c1181085 Change concept of super-clients from MAC-based to index-based. We append a new column to the network table which can be used to assign super-clients to multiple devices. This can both cover automatic grouping (whenever MAC addresses are available) and also situations where this is not possible (when MAC addresses are not available, e.g., due to network layer separation). Real-time signal 3 causes FTL to re-import super-clients from the database without affecting anything else.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-12 19:34:56 +02:00
DL6ER b422beb82a Implement client-based Query Log filtering for super-clients and ensure we always count both the normal and the super-client when there is a new query / garbage collection
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 21:13:36 +02:00
DL6ER e5b18944eb Implement super-client infrastructure
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 21:13:34 +02:00
DL6ER 54f92dd16a Merge branch 'development' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 06:53:58 +02:00
DL6ER d3467daf44 Merge branch 'development' into new/tre-regex
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:21:33 +02:00
DL6ER 668ee9f83e Merge branch 'development' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:18:54 +02:00
DL6ER 957ff0b3f8 Try to obtain MAC address from dnsmasq's cache (also ask the kernel) instead of only relying on the database content (may not be fully up-to-date)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:11:06 +02:00
DL6ER 82fe722af9 Add tests for ";querytype=A", ";querytype=!A" and ";invert". Add explicit support for query type NS.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:52:30 +02:00
DL6ER 778c233b38 Add ;querytype=!A option for INVERTED query type filtering.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:51:01 +02:00
DL6ER 68435f83d4 Make querytype string available everywhere in FTL.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:47:13 +02:00
DL6ER 3a4d8e2e0d Add ;querytype=AAAA option
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:43:02 +02:00
DL6ER fd79c1f5a4 Log previously seen client when interpreting EDNS0 client subnet information
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:09:59 +02:00