1
0
mirror of https://github.com/MetaCubeX/mihomo.git synced 2026-10-10 20:23:11 +08:00

4330 Commits

Author SHA1 Message Date
Jiawen Geng 88dcbf7f16 fix: default listener tun to mips stack (#3264) v1.19.32 2026-09-30 22:35:49 +08:00
BESTRUI ac652970fe fix: nil pconn deref when ctx is canceled during h2 ClientConn setup 2026-09-30 21:40:50 +08:00
artbred 409ee57ef2 fix: populate HWCap from auxv on linux 2026-09-30 21:37:59 +08:00
proxi 8fa048d376 fix: half-close in sing-mux 2026-09-30 21:22:40 +08:00
wwqgtxx 134176994f chore: support RX checksum offload for mipstack 2026-09-30 15:47:24 +08:00
wwqgtxx 60f70cec63 fix: align unconnected UDP and raw IP ICMP errors with Linux for mipstack 2026-09-30 00:08:22 +08:00
wwqgtxx 63bd52ec79 chore: change default IP stack mode to mips and support congestion-controller option for tun 2026-09-27 09:11:59 +08:00
enfein f103639c80 chore: update mieru version (#3242)
v3.38.0 reduces CPU usage when UDP session is idle.
2026-09-25 08:10:26 +08:00
FlyingSB 8d57a8c57c fix: exclude opcode from P_DATA_V1 AEAD additional data for OpenVPN (#3237)
OpenVPN authenticates the opcode/peer-id header as AEAD additional data
only for P_DATA_V2. For P_DATA_V1 the additional data is the packet ID
alone. We included the opcode for both, so every data packet exchanged
with a server that does not push peer-id (e.g. SoftEther) failed
authentication and was silently dropped after a successful handshake.
2026-09-25 00:24:38 +08:00
wwqgtxx 41b8a05915 fix: account for TCP options in effective MSS 2026-09-24 21:36:47 +08:00
简直蠢丶 3025efad06 feat: add load-balance hash-key to pin a session on the inbound user (#3133) 2026-09-24 20:32:42 +08:00
Peter Solomon 3c947c76d4 chore: convert support xhttp extra.headers (#3230) 2026-09-22 21:25:29 +08:00
Ryoma Dev afe94dafef fix: set udp InUser metadata for mieru inbound (#3236) 2026-09-22 20:46:47 +08:00
wwqgtxx 91dd03a9e5 chore: support lazy receive buffer reads for mipstack and gvisor 2026-09-22 17:07:49 +08:00
Chenx Dust 5019cc090e fix: potential race condition in c.idleSession.Len() in idleCleanupExpTime() for anytls (#3225) 2026-09-19 22:02:11 +08:00
MiaM1ku fbb674227d fix: restart EasyTier outbound after silent overlay failure (#3215) 2026-09-16 00:51:29 +08:00
wwqgtxx ab405bad5b feat: support stack: mips in tun configuration v1.19.31 2026-09-14 19:59:30 +08:00
wwqgtxx dc66a8a180 fix: close connection after error handling in handleContextListener 2026-09-14 14:24:43 +08:00
wwqgtxx 78210c9c72 fix: close connection after error handling in kcptun 2026-09-14 14:11:18 +08:00
wwqgtxx 06b2c5b887 fix: close connection after error handling in mkcp outbound 2026-09-14 13:57:17 +08:00
wwqgtxx 187c6342c4 fix: close connection after error handling in snell outbound 2026-09-14 13:54:21 +08:00
wwqgtxx 0436650753 fix: close connection after error handling in doq 2026-09-14 13:49:12 +08:00
wwqgtxx 7d7532d49f fix: error using of safeConnClose in sudoku outbound 2026-09-14 11:34:28 +08:00
wwqgtxx faeb537ae2 fix: close connection after error handling in tuic server 2026-09-14 11:34:27 +08:00
wwqgtxx e0f1d2b2fd fix: close udp endpoint in mieru server 2026-09-14 11:34:27 +08:00
wwqgtxx 1cdca1a015 fix: handle decryption handshake errors in server 2026-09-14 11:24:37 +08:00
Huffer c210be21e0 chore: buffer geodata reads with a 16 KiB reader (#3185)
Batch small GeoSite and GeoIP reads, reuse prefetched bytes when skipping
records, and reconstruct the matched prefix without seeking backward.
Report EOF after a matched prefix as a truncated record.
2026-09-14 08:43:14 +08:00
enfein 94ccba5661 fix: mieru listener doesn't obey "listen" config (#3205)
Previously, mieru server always listen to 0.0.0.0.
Version 3.37.0 allow the server listen to a user provided IP address.
2026-09-14 07:51:40 +08:00
MiaM1ku dca26db017 feat: add EasyTier outbound (#3194) 2026-09-11 09:41:09 +08:00
wwqgtxx b59a7e7baf chore: sharing synthetic datasets used for build benchmarking 2026-09-11 07:53:18 +08:00
wwqgtxx ebf82e2962 chore: reuse queues during DomainSet build
Build the succinct domain index one level at a time and alternate two reusable queues instead of retaining every processed node until construction completes.

Keep explicit node IDs to preserve terminal ordering, Foreach output, and binary serialization. Query logic and the serialized layout remain unchanged.

This reduces peak build memory and improves construction time for DomainMap. In isolated measurements, the mixed 100k-rule workload used about 53% less peak memory and completed about 11% faster, while deep 100k-rule input used about 72% less peak memory and completed about 24% faster.
2026-09-11 06:51:26 +08:00
wwqgtxx f6a038ce0f chore: add some benchmark code for new DomainMap 2026-09-11 00:05:21 +08:00
wwqgtxx d37f58e768 chore: add new DomainMap implement based on succinct DomainSet 2026-09-10 22:49:36 +08:00
wwqgtxx 6087521e60 chore: avoid a separate rule slice in DumpMrs
DomainSet emits at most one exact entry and one suffix-only entry for each domain. Sorting without the leading dot makes matching pairs adjacent, so they can be combined in place.

Replace per-entry binary searches and the separate rule slice with an adjacent pairing pass. Merge pairs into +.domain, remove consumed entries from the original slice, and sort the resulting rules by their full text.

Add regression coverage for multiple pairs and wildcard ordering. Output semantics and early termination remain unchanged.
2026-09-10 22:28:36 +08:00
Aethersailor 518c7036df chore: convert support REALITY ML-KEM option (#3199)
Parse support-x25519mlkem768 from VLESS and VMess AEAD share links.
Only set it when a REALITY public key and a valid boolean are present,
preserving existing behavior for links without the parameter.

Add coverage for plain and Base64 subscriptions and adapter parsing.
2026-09-10 21:54:48 +08:00
wwqgtxx 77b9393c32 fix: preserve domain rules across Foreach round trips
The +.domain syntax includes both the domain itself and its subdomains. Using it for a suffix-only terminal adds an unintended exact match when the output is reinserted and can overwrite a separately stored exact value.

Emit .domain for suffix-only entries in DomainTrie and DomainSet Foreach, keeping exact entries separate. Preserve the internal '+' marker when converting Trie to Set, and combine MRS entries into +.domain only when both exact and suffix entries exist.

Add regression coverage for matching behavior and distinct values after reinsertion, as well as MRS deduplication and compact output. Query logic and binary layouts remain unchanged.
2026-09-10 18:52:49 +08:00
wwqgtxx 4aa9cc17fc chore: avoid redundant select calculations in DomainSet
Once the key is exhausted, a terminal node completes the match; otherwise only saved wildcard branches can still succeed. No input remains to match the current node's child edges, so their starting position is unnecessary.

Defer the child-edge select in Has until more input needs matching, both after matching a byte and when restoring a wildcard. Keep the node-terminator select needed to resume saved wildcard branches.

Earlier candidate benchmarks show median query times ~3%/~1% lower for short/long queries and ~11%/~8% lower for exact/mixed-rule workloads, with no additional allocations or changes to the index layout.
2026-09-10 09:25:15 +08:00
wwqgtxx 8e2f18a1a9 chore: avoid redundant rank calculations in DomainSet
Child edges are 0 bits and each node ends with a 1 bit in labelBitmap. An edge of nodeId has exactly nodeId preceding 1 bits, so its label index is bmIdx - nodeId. Child nodes follow the same order as labels, starting at 1 because node 0 is the root. Therefore, the child node ID is bmIdx - nodeId + 1.

Use this identity in Has and keys instead of countZeros. Keep rank for wildcard restoration, where the cursor lacks the parent node ID.

Existing short/long query benchmarks take ~12%/~11% less time, with no additional allocations or changes to the index layout.
2026-09-10 09:04:52 +08:00
wwqgtxx 5f9510988c fix: DomainSet wildcard matching with overlapping rules
These queries now correctly return true:

- Query: a.example.com
  Rules: [*.example.com, dead.a.example.com]

- Query: b.a.example.com
  Rules: [*.*.example.com, dead.*.a.example.com, dead.b.a.example.com]

- Query: b.c.a.example.com
  Rules: [*.*.*.example.com, *.a.example.com]
2026-09-10 08:19:36 +08:00
浅小沫 20bcda2d1a fix: avoid VLESS decryption cleanup panic (#3195) 2026-09-10 07:22:33 +08:00
wwqgtxx d5f57a5e29 fix: missing NeedHandshake for shadowsocks none 2026-09-08 18:12:47 +08:00
wwqgtxx 390870c7b4 feat: support identity-secret for ZeroTier 2026-09-08 17:31:05 +08:00
wwqgtxx 5183232e7f fix: RandomPaddingAddition and DisableCookies for AmneziaWG v3 2026-09-08 15:26:38 +08:00
NuoFang a91201f1fc fix: correct android amd64 core asset name in updater (#3167) 2026-09-08 14:22:19 +08:00
Token 6d179a1c45 fix: openvpn derive the tls-auth HMAC digest from auth instead of hard-coding SHA-1 (#3189) 2026-09-08 12:10:15 +08:00
wwqgtxx bbb8cb924b chore: add standalone DomainSetBuilder 2026-09-08 10:27:49 +08:00
saba-futai 8f54283e97 chore: updated sudoku to v0.5.0 (#3187) 2026-09-07 08:46:46 +08:00
wwqgtxx 92433dbafc chore: reduce gVisor memory usage 2026-09-07 07:31:32 +08:00
wwqgtxx fd74ecb6e2 fix: trusttunnel client not waiting for TCP connection established 2026-09-05 09:36:30 +08:00
wwqgtxx 634b31991c fix: hysteria2 UDP sessions not closed on connection close 2026-09-05 07:55:05 +08:00