summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md26
-rw-r--r--Cargo.lock54
-rw-r--r--Cargo.toml4
-rw-r--r--RELEASE_NOTE.md24
4 files changed, 70 insertions, 38 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdc9345..b330d68 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,29 @@
+## [DPIBreak v0.6.2] - 2026-07-15
+### Changed
+Linux:
+- Dropped `nix` and `ctrlc` dependencies. Signal handling now
+ uses signalfd directly, libc wrappers moved to internal `libc_s`
+ module.
+- rxring: tp_* parameters now configurable.
+
+Windows:
+- Stop the WinDivert service when DPIBreak terminates.
+- Pause the console window on error so that it does not closed
+ immediately and hide error log.
+
+### Fixed
+Windows:
+- WinDivert64.sys could not be deleted after exit, blocking updates
+ (e.g. via winget). Handles are now closed and the driver service
+ uninstalled before process exit. (#21, #30)
+- Race condition and dangling pointer in crate windivert. (#30)
+
+Linux:
+- rxring: various stabilization including possible memory ordering and
+ lifetime issue.
+- iptables rules not cleaned up on startup; abort if any rule fails
+ to install.
+
## [DPIBreak v0.6.1] - 2026-04-16
### Changed
- Windows: wait for keypress before exit on `--help'
diff --git a/Cargo.lock b/Cargo.lock
index 091fa7e..e3adcd1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -58,9 +58,9 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
[[package]]
name = "bytes"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]]
name = "cast"
@@ -70,9 +70,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.2.66"
+version = "1.2.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996"
+checksum = "e17dd265a7d0f31ef544e1b20e03add05d3b45b491b633b10d67145d2acc1a38"
dependencies = [
"find-msvc-tools",
"shlex",
@@ -173,9 +173,9 @@ dependencies = [
[[package]]
name = "crossbeam-deque"
-version = "0.8.6"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
@@ -183,18 +183,18 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.18"
+version = "0.9.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.21"
+version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
[[package]]
name = "crunchy"
@@ -213,7 +213,7 @@ dependencies = [
[[package]]
name = "dpibreak"
-version = "0.6.1"
+version = "0.6.2"
dependencies = [
"anyhow",
"criterion",
@@ -328,9 +328,9 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "memchr"
-version = "2.8.2"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "nfq-updated"
@@ -448,9 +448,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.12.4"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
+checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2"
dependencies = [
"aho-corasick",
"memchr",
@@ -460,9 +460,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.14"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db"
dependencies = [
"aho-corasick",
"memchr",
@@ -477,9 +477,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]]
name = "rustversion"
-version = "1.0.22"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
[[package]]
name = "same-file"
@@ -547,9 +547,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
[[package]]
name = "socket2"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
+checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
dependencies = [
"libc",
"windows-sys",
@@ -953,18 +953,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.52"
+version = "0.8.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
+checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.52"
+version = "0.8.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
+checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5"
dependencies = [
"proc-macro2",
"quote",
@@ -973,6 +973,6 @@ dependencies = [
[[package]]
name = "zmij"
-version = "1.0.21"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
diff --git a/Cargo.toml b/Cargo.toml
index 2ade2e2..452d229 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,13 +17,13 @@
[package]
name = "dpibreak"
-version = "0.6.1"
+version = "0.6.2"
authors = ["Dilluti0n <[email protected]>"]
edition = "2024"
rust-version = "1.88"
build = "build.rs"
license = "GPL-3.0-or-later"
-description = "fast and easy-to-use DPI circumvention tool in Rust."
+description = "System-wide DPI circumvention with minimal configuration."
repository = "https://github.com/dilluti0n/dpibreak.git"
homepage = "https://github.com/dilluti0n/dpibreak"
readme = "README.md"
diff --git a/RELEASE_NOTE.md b/RELEASE_NOTE.md
index fcd38d6..56e843d 100644
--- a/RELEASE_NOTE.md
+++ b/RELEASE_NOTE.md
@@ -1,8 +1,14 @@
-Maintenance release, due to winget release on windows.
+Mostly fixes and internal stabilization.
-- Windows: wait for keypress before exit on `--help'
-- Fix `-D` deprecation warning never firing (was checking wrong condition)
-- Linux: drain AF_PACKET rx ring before nfqueue in the poll loop to reduce the race window where HopTab lookup could miss a hop value whose SYN/ACK had already arrived in the same wakeup
+On Windows, to make `WinDivert64.sys` available for deletion after the program terminates, the WinDivert service is now stopped on dpibreak termination. This prevents the [error](https://github.com/dilluti0n/dpibreak/issues/29) during `winget update --all`. (#21, #30)
+
+On Linux, there was a lot of internal refactoring, including possible fixes for memory ordering and packet buffer offset calculation in the rxring module.
+
+Other fixes:
+- Windows: keep the console window open on error so the message stays readable.
+- Windows: race condition and dangling pointer in the `windivert` crate. (#30)
+- Linux: iptables rules were not cleaned up on startup.
+- Linux: signal handling now uses signalfd integrated into the existing poll loop instead of a handler and a global flag.
## Installation
### Windows
@@ -11,14 +17,14 @@ Via winget:
winget install dpibreak
```
(Full package ID: `Dilluti0n.DPIBreak`)
-Run `dpibreak` on powershell or start (`Windows+R`).
+Run `dpibreak` on powershell or start (`Windows+R`). If error occurs on update, see [#29](https://github.com/dilluti0n/dpibreak/issues/29).
Portable download:
1. Download the `.zip` from the below and extract it.
-2. Double-click `dpibreak.exe` to run, or `start_fake.bat` for [fake](https://github.com/Dilluti0n/DPIBreak#fake) mode.
+2. Double-click `dpibreak.exe` to run, or `start_fake.bat` for [fake](https://github.com/dilluti0n/dpibreak#fake) mode.
3. To run automatically on boot, run `service_install.bat` as administrator.
-See `WINDOWS_GUIDE.txt` in the zip for more details. If you have trouble deleting the previous version's folder when updating, see [#21](https://github.com/Dilluti0n/DPIBreak/issues/21).
+See `WINDOWS_GUIDE.txt` in the zip for more details. If you have trouble deleting the previous version's folder when updating, see [#21](https://github.com/dilluti0n/dpibreak/issues/21).
> [!NOTE]
> On first run, Windows SmartScreen may block the binary. Double-click `dpibreak.exe` (or run it from `cmd`), then click **More info -> Run anyway**. After that, `dpibreak` works from any terminal including PowerShell. See [#25](https://github.com/dilluti0n/dpibreak/issues/25) for details.
@@ -31,8 +37,8 @@ curl -fsSL https://raw.githubusercontent.com/dilluti0n/dpibreak/master/install.s
Or download the tarball from the assets below:
```
-tar -xf DPIBreak-*.tar.gz
-cd DPIBreak-*/
+tar -xf dpibreak-*.tar.gz
+cd dpibreak-*/
sudo make install
```