Vladimir Dubrovin
8c2ad56665
Use memmove for overlapping region
2026-08-08 20:46:52 +03:00
Vladimir Dubrovin
a986ed7a07
Add linger timeout
2026-08-08 19:13:02 +03:00
Vladimir Dubrovin
4877b39f2c
Fix deadcode / warnings / minor bugs
2026-07-31 18:55:59 +03:00
Vladimir Dubrovin
8f13582329
Fix invalid offset in datafilters
2026-06-28 21:09:36 +03:00
Vladimir Dubrovin
af9f23ece7
Fix: invalid socket in poll(): can break sockmap() on Windows
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Waiting to run
2026-06-28 13:49:52 +03:00
Vladimir Dubrovin
a639bcb017
Fix: unneeded poll in sockmap
2026-05-22 17:57:15 +03:00
Vladimir Dubrovin
1de06c5059
Fix invalid buffer calculation in sockmap
2026-05-12 21:06:31 +03:00
Vladimir Dubrovin
aaa04116a8
Fix issues with -s
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Has been cancelled
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Has been cancelled
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Has been cancelled
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Has been cancelled
2026-05-08 20:43:02 +03:00
Vladimir Dubrovin
b1d21cbdca
Copyright update
2026-05-08 18:07:08 +03:00
Vladimir Dubrovin
830b2d39d1
Use standard malloc functions
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Waiting to run
2026-05-04 18:50:02 +03:00
Vladimir Dubrovin
da8a8615f4
Remove UDPASSOC check from tcp sockmap
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Has been cancelled
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Has been cancelled
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Has been cancelled
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Has been cancelled
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Has been cancelled
2026-05-02 15:36:21 +03:00
Vladimir Dubrovin
4068a6955f
Fix UDP parent for SOCKSv5
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Waiting to run
2026-05-02 00:00:45 +03:00
Vladimir Dubrovin
e986f8a747
FIx hanging connections in sockmap
2026-05-01 17:19:23 +03:00
Vladimir Dubrovin
314503d8df
SOCKSv5 parent udp support (initial, untested)
2026-05-01 15:13:53 +03:00
Vladimir Dubrovin
a4527783d6
Correctly process half-closed connections; add grace sleep before closing sockets
2026-04-28 16:15:18 +03:00
Vladimir Dubrovin
fb70d06d3e
Add linger sleep on connection close
2026-04-28 14:55:37 +03:00
Vladimir Dubrovin
f01c8bfee9
Code cleanup
2026-04-27 19:58:34 +03:00
Vladimir Dubrovin
d52701518d
udppm switched to hashtable and supports multiple connections; no standalone udppm
2026-04-27 15:12:39 +03:00
Vladimir Dubrovin
2d6eeff5f3
FIx typos, update documentation
2026-04-12 13:58:42 +03:00
Vladimir Dubrovin
8cb8be1be8
Fix warnings
2026-04-08 21:13:45 +03:00
Vladimir Dubrovin
375e3a74d0
call local socket function
2024-02-18 19:41:45 +03:00
Vladimir Dubrovin
8198db8617
adding state to socket functions
2024-02-17 17:31:25 +03:00
Vladimir Dubrovin
55d1bbe155
Grace delay feature added
...
`proxy -g8000,3,10`
First parameter is average read size we want to keep, second parameter is
minimal number of packets in the same direction to apply algorythm,
last value is delay added after polling and prior to reading data.
An example above adds 10 millisecond delay before reading data if average
polling size is below 8000 bytes and 3 read operations are made in the same
direction. It's specially usefule with splice. `logdump 1 1` is useful
to see how grace delays work, choose delay value to avoid filling the read
pipe/buffer (typically 64K) but keep the request sizes close to chosen average
on large file upload/download.
2022-05-19 18:51:02 +03:00
z3apa3a
e1b4e50242
Copyright update
2021-07-02 11:50:33 +03:00
z3apa3a
d7eb9fb82f
better error handling on splice()
2021-05-18 11:34:57 +03:00
z3apa3a
1bd6eff0e6
Update sockmap.c
2021-05-17 18:12:50 +03:00
z3apa3a
aac5c9fff9
More accurate error handling on socket mapping
2021-05-15 18:42:17 +03:00
z3apa3a
6279e86086
Do not terminate connection on POLLHUP if there is a data to read
2021-04-22 16:59:07 +03:00
z3APA3A
d2dcf4bb69
better dat filters handling
2020-11-19 02:30:19 +03:00
z3APA3A
021314d6f5
Fix bandlim handling
2020-11-11 17:40:46 +03:00
z3APA3A
ee0eac51d6
Remove RDHUP processing
...
Do not actually need it, may lead to connection closed before all data
read
2020-11-02 16:10:04 +03:00
z3APA3A
b2f82ed04f
More accurate conditions in sockmap's main event loop
2020-10-19 13:11:44 +03:00
z3APA3A
3f2659cb0f
Use MAXFAILATTEMPT to limit socket failuers
2020-10-15 16:44:32 +03:00
z3APA3A
aeb0f4caa5
Better handle socket closing
2020-10-15 16:27:39 +03:00
z3APA3A
9f6a8460ac
limit failed mapping attempts to 13
2020-10-15 01:17:10 +03:00
z3APA3A
637cb2e76d
adding guard for polling loop to prevent CPU exhastion in the case of system misbihavior
2020-10-14 18:58:52 +03:00
z3APA3A
47affa0add
Correct returning 98 code from socksmap
2020-10-14 16:15:11 +03:00
z3APA3A
eb829b062b
Major code refactoring
...
- sockmapping rewritten from stratch to minimilse polling. poll() is now
only called if blocking is actually expected, splice pipes are now
polled if splice fails, buffers flushing is much more accurate.
- logging code moved to separate files
- signal masks added to client threads to prevent unneeded interruptions
- bandwidth limitation will not delay the thread after client or server
shutdown
2020-10-09 15:42:34 +03:00
z3APA3A
5ee553e9a9
Correct: do not log 98/99 as an error
2019-01-20 17:52:00 +03:00
z3APA3A
8af9ea8de8
back to non-blockin splice on sending
2019-01-11 23:26:52 +03:00
z3APA3A
603ab8187f
make spliced sockmap more reliable
2019-01-11 23:10:39 +03:00
z3APA3A
03efdc451b
Add POLLRDHUP support to spliced sockmap
2019-01-11 19:12:03 +03:00
z3APA3A
930d9823ea
Use futex instead of pthread_mutex on Linux
2018-12-28 18:49:45 +03:00
z3APA3A
3f2e621902
Correct socket polling on mapping
2018-12-06 00:32:37 +03:00
z3APA3A
b7e3a85e88
Use non-blocking splice only on write to socket
...
to prevent race condition data is not copied to the pipe yet
2018-12-05 23:41:37 +03:00
z3APA3A
79ea433caf
Can go to 100% CPU if one side have closed connection
2018-12-05 21:44:59 +03:00
z3APA3A
3d9ac1e1fb
Flush splice pipe on socket close
2018-05-12 01:19:11 +03:00
z3APA3A
12b5ad143f
correct trafic accounting in spliced map
2018-04-27 01:52:08 +03:00
Vladimir Dubrovin
b7c667a682
Bugfixes for previous commit
2018-04-23 02:00:53 +03:00
Vladimir Dubrovin
97b97a5664
Typo corrected
2018-04-23 02:00:34 +03:00