diff options
| -rw-r--r-- | CHANGELOG.md | 26 | ||||
| -rw-r--r-- | Cargo.lock | 54 | ||||
| -rw-r--r-- | Cargo.toml | 4 | ||||
| -rw-r--r-- | RELEASE_NOTE.md | 24 |
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' @@ -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" @@ -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 ``` |
