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
z3APA3A
531e0707cf
Simplify splicemap
2018-04-23 02:00:19 +03:00
z3APA3A
b3abf80a50
slicedmap - replace usleep with poll, remove SPLICE_F_MOVE
...
use poll instead of usleep (to get rid of potential blocking in future)
remove SPLICE_F_MOVE
2018-04-22 23:23:22 +03:00
z3APA3A
fd588949c9
remove unneeded check
2018-04-22 22:44:06 +03:00
z3APA3A
a42bb38d76
Use WSAPoll on Windows (except lite version)
2018-04-21 23:57:42 +03:00
z3APA3A
d40e5d458c
FIX: tcppm may not work with parent proxy
2017-02-02 00:36:59 +03:00
z3APA3A
f709255d62
Copyrights cleaned, authradius.c added
2016-12-20 15:47:02 +03:00
z3apa3a
d159c57e1f
Add splice() support on Linux to proxy, socks, ftppt, smtpp, pop3p
...
usage example:
proxy -s
proxy -s2
-s - enable splice() for sockets mapping to avoid data to be copied to user space
-s2 - enable splice() and attempt to free user space buffer ASAP
2016-12-19 22:07:34 +03:00
z3apa3a
6696b35d74
Added -s option support for proxying with splice() for Liux
...
(without copying network data to
userspace). Currently only for tcppm.
2016-12-19 02:56:23 +03:00
z3APA3A
cfa4d11027
Do not fail connection with 333 error on configuration reload
2016-04-26 18:50:57 +03:00