Narasimha-sc
71de260a0c
Merge commit '8bc4d3601250d9f79dc7e80ead319ec2b6d4a95a' into nd/net-socket-timeout
2026-10-19 12:31:33 +00:00
Evgeny Poberezkin
8bc4d36012
7.1.0.14
2026-10-19 11:40:39 +01:00
Evgeny and Evgeny @ SimpleX Chat
aabf4cdab9
agent: autoincrement IDs in sqlite ( #1951 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-18 22:24:50 +01:00
Evgeny Poberezkin
793f6721f6
7.1.0.12
v7.1.0-beta.4
2026-10-17 10:43:54 +01:00
sh
4b8d31a476
smp-server: remove deleted queues from store maps ( #1947 )
2026-10-16 09:46:09 +01:00
sh and Evgeny @ SimpleX Chat
e91711c7d7
smp-server: remove journal store leftovers ( #1946 )
...
* smp-server: remove postgres queue cache
* smp-server: remove queue locks
* smp-server: simplify message store class
* smp-server: remove unused functions and exports
* tests: remove journal leftovers
* agent: remove unused lock exports
* fix
* fixes
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-15 19:36:45 +01:00
f1f079044c
smp-server: remove journal message store ( #1919 )
...
Co-authored-by: sh <github.shum@liber.li >
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-15 17:37:49 +01:00
Evgeny and Evgeny @ SimpleX Chat
9d83c0378e
tests: execute in parallel, agent: fix race condition with files and when switching queue ( #1932 )
...
* tests: execute in parallel
* fix test
* fix postgresql build
* fix test
* fix test
* fix some tests
* fix tests
* fix tests
* fix test
* update schema
* fix test
* update schemas
* diff
* fix race
* fixes
* update schemas
* fix tests
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-15 14:10:04 +01:00
sh
1d39da91c5
smp-server: enforce command concurrency limit ( #1944 )
...
* smp-server: hold command slot until completion
* smp-server: command slot wait timeout and stats
* smp-server: clarify command slot comments
* smp-server: simplify command slot fork
* smp-server: limit direct RSLV per client
* smp-server: distinct error for RSLV slot timeout
* smp-server: client command slot wait timeout
* smp-server: reply to forwarded RSLV slot timeout
* smp-server: raise default concurrency limits
* smp-server: simplify command slot wait
2026-10-15 13:58:07 +04:00
Evgeny Poberezkin
cba1382356
7.1.0.11
2026-10-11 22:33:06 +01:00
Evgeny and Evgeny @ SimpleX Chat
b5e8a4b8cc
fix tests on ghc 8.10.7 ( #1939 )
...
* fix tests on ghc 8.10.7
* fix test
* fix schema dump test
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-11 20:36:51 +01:00
Evgeny and Evgeny @ SimpleX Chat
3db4029bb9
ci: build cache ( #1938 )
...
* ci: build cache
* update build job
* rename steps, cache all builds, patch timestamps for ghc 8.10.7
* refactor, save O0 caches in master and stable builds
* update build to include toolchain fingerprint
* do not save cache on exact match
* remove caching docker from prs
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-11 11:52:24 +01:00
Evgeny and Evgeny @ SimpleX Chat
8a80727fa5
smp server: delayed AUTH responses ( #1937 )
...
* smp server: delayed AUTH responses
* plan
* update
* simplify
* simplify
* stat when sent without delay
* update schema
* round up response time to the nearest delay multiple
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-11 07:37:33 +01:00
Evgeny and Evgeny @ SimpleX Chat
a2f985dc68
agent: prepare invitation link, create ratchet when connection is prepared ( #1880 )
...
* agent: prepare invitation link
* simplify
* refactor
* fix
* change min SMP version to 15
* remove dead code for SMP version <= 15
* update
* diff
* create ratchet when connection is prepared
* createRatchetIfNotExists
* clean up, only check client notices for contacts, fix orphan record
* simplify
* refactor
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-10 23:15:19 +01:00
Narasimha-sc
84381e0ea5
transport: optionally bound the time a connection with unacknowledged data takes to fail
...
TCP keep-alive probes are only sent while there is no unacknowledged data, so
a connection that died with data in flight is only reported as failed when the
OS gives up retransmitting - ~15 minutes on Linux and Android. When no network
change is reported to the agent (a silent route change, a client without a
network observer) that is how long delivery keeps failing on the dead client.
KeepAliveOpts gets unackedDataTimeout: when it is set, the sockets that set TCP
keep-alive also set TCP_USER_TIMEOUT (TCP_RXT_CONNDROPTIME on Darwin, not set
on Windows) to the keep-alive detection time, so that such a connection fails
after the same time as an idle one. On Linux this timeout also bounds the
zero-window persist timer, so a server that stops reading for that long then
fails the connection.
The option is off unless the client sets it, so that it can be enabled by the
users who test it before it becomes the default. It is a Maybe to keep the
clients that do not send it working. As it is derived from the keep-alive
options where they are set, the two detection times cannot diverge and lowering
the keep-alive settings lowers both.
It is removed for the connections via SOCKS proxy - the socket is then
connected to the proxy, its acknowledgements only mean that the proxy buffered
the data, and a slow circuit should not fail the connection.
2026-10-08 20:49:32 +00:00
Evgeny and Evgeny @ SimpleX Chat
c18e0297c4
agent: migration to add index to read queues ( #1934 )
...
* agent: migration to add index to read queues
* update postgres schema
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-08 17:07:55 +01:00
Evgeny and Evgeny @ SimpleX Chat
e24d537eaa
agent: fix race when switching reception to the new queue ( #1933 )
...
* agent: fix race when switching reception to the new queue
* return bool
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-08 16:03:06 +01:00
sh
7754f8624e
smp-server: copy entity IDs out of received block ( #1906 )
2026-10-08 15:28:38 +01:00
Evgeny and Evgeny @ SimpleX Chat
8d81f775b1
smp protocol: require fixed size corr ID when used as nonce, and min size msg ID to use as nonce ( #1925 )
...
* smp protocol: require fixed size corr ID when used as nonce, and min size msg ID to use as nonce
* simpler
* fixes
* randomMsgId
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-08 09:32:11 +01:00
Evgeny and Evgeny @ SimpleX Chat
c0a1b7bd2d
agent: fail database transaction instantly when database is closed, prevent race conditions in command processing, fix race when uploading files ( #1885 )
...
* agent: fail database transaction instantly when database is closed
* update direct-sqlcipher
* update direct-sqlcipher, fixes
* autoincrement command ID
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-06 13:01:55 +01:00
Evgeny and Evgeny @ SimpleX Chat
4ab5376a6e
smp: reduce min supported version to 15 (short links support, 3/30/2025) ( #1931 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-05 11:31:57 +01:00
Evgeny
aaffb5b07d
Merge pull request #1922 from simplex-chat/ratchet
...
Improve double ratchet
2026-10-05 08:07:04 +01:00
Evgeny and Evgeny @ SimpleX Chat
65893a359a
agent: resolve potential race conditions in double ratchet ( #1923 )
...
* agent: resolve potential race conditions in double ratchet
* update
* improve
* diff
* diff
* diff
* simpler
* more races
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-04 22:28:50 +01:00
Evgeny and Evgeny @ SimpleX Chat
fcc5670ae2
agent: keep ratchet hashes for connection lifetime, up to some cap, to prevent replay of expired ratchets ( #1893 )
...
* agent: keep ratchet hashes for connection lifetime, to prevent replay of expired ratchets
* cap
* simpler
* simpler2
* split
* one query
* simplify
* performance
* migration
* fix schema
* comment
* improve
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-04 14:43:21 +01:00
Evgeny and shum
18440c0d17
smp-server: check queue is not secured in link store ( #1917 )
...
Co-authored-by: shum <github.shum@liber.li >
2026-10-04 13:41:48 +01:00
Evgeny and Evgeny @ SimpleX Chat
64c5d19fc4
agent: aggregate cap on skipped message keys ( #1903 )
...
* agent: aggregate cap on skipped message keys
* migration
* update migration
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-04 10:18:41 +01:00
Evgeny and Evgeny @ SimpleX Chat
e11dfb985d
consider IP address protected only if it is used for the chosen host ( #1895 )
...
* consider IP address protected only if it is used for the chosen host
* simplify
* simplify
* simplify
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-03 22:45:44 +01:00
Evgeny and shum
76248dd767
sntrup761: bound KeyGen retries on R3 inversion ( #1918 )
...
Co-authored-by: shum <github.shum@liber.li >
2026-10-03 17:01:36 +01:00
brenzi
9c641fed91
reject e2e params with kem_ct and without kem_key ( #1901 )
2026-10-03 15:10:42 +01:00
sh
91e070cb5e
crypto: document 16-byte GCM IV in double ratchet ( #1914 )
2026-10-03 15:00:18 +01:00
sh
9fe3745401
docs: use role names for key exchange parties ( #1912 )
2026-10-03 14:59:22 +01:00
Evgeny and Evgeny @ SimpleX Chat
24036368f8
xrcp: limit multicast validity time window ( #1899 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-03 14:51:48 +01:00
sh
acd5c0f530
docs: add cryptographic primitive registry ( #1913 )
2026-10-03 14:21:21 +01:00
Evgeny and Evgeny @ SimpleX Chat
ead8f10f26
smp protocol: bind agreed version of forwarded command ( #1915 )
...
* smp protocol: bind agreed version of forwarded command
* refactor
* pass proxied relay version range via config
* simplify
* refactor
* packZipWith
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-03 08:56:19 +01:00
sh
053e83b704
resolver: multicall reads, keep-alive, workers and structured logs ( #1883 )
...
* resolver: queue up to 128 pending connections
* resolver: reuse connections to the node
* resolver: read each round in one multicall
* resolver: run worker processes, log durations
* resolver: keep smp-server connections alive
* resolver: test with pytest, lock dependencies
* resolver: structured logs and real client addresses
* resolver: refuse requests with a body
* resolver: harden pool, health and odd answers
* resolver: pin images, rotate logs
* resolver: stricter body check, redact RPC URL
* resolver: ship .env as .env.example
* resolver: pass settings from .env
* resolver: name the image snrc-resolve:local
2026-10-01 09:10:42 +01:00
sh
234b5cd856
smp-server: rework message expiration ( #1873 )
...
* smp server: rework message expiration
* smp server: paginate message expiration sweep
2026-10-01 09:08:16 +01:00
Evgeny Poberezkin
38fdc0c544
7.1.0.10
2026-09-30 13:03:16 +01:00
Evgeny and Evgeny @ SimpleX Chat
b4c288c597
docs: clarify security model ( #1902 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-30 10:18:52 +01:00
Evgeny and Evgeny @ SimpleX Chat
0e1ecdcff6
xftp server: validate paths in store log ( #1894 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-30 09:36:45 +01:00
Evgeny and Evgeny @ SimpleX Chat
c1776dc5a4
server: improve control port auth ( #1898 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-30 09:04:28 +01:00
Evgeny and Evgeny @ SimpleX Chat
e2df2e1b7c
docs: update SMP protocol ( #1900 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-30 08:10:35 +01:00
Evgeny and Evgeny @ SimpleX Chat
267e2e0727
agent: fix ratchet - dont save if body auth failed ( #1892 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-29 21:32:21 +01:00
Evgeny and Evgeny @ SimpleX Chat
551a79d99b
smp server: validate client version in forwarded command ( #1890 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-29 19:52:15 +01:00
Evgeny and Evgeny @ SimpleX Chat
972e50e768
docs: update XRCP doc to make code verification optional for known connections ( #1891 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-29 18:08:54 +01:00
Evgeny Poberezkin
5eecd99bc2
7.1.0.9
2026-09-26 12:52:57 +01:00
69eb28b3ab
agent: share server value across subscription rows of server-keyed queries ( #1877 )
...
* agent: share server value across subscription rows of server-keyed queries
* reduce fields in query
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-26 12:05:20 +01:00
Evgeny and Evgeny @ SimpleX Chat
875ba7d53f
agent: make QUOTA error temporary for async commands ( #1881 )
...
* agent: make QUOTA error temporary for async commands
* retry commands on quota
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-25 18:13:49 +01:00
Evgeny and Evgeny @ SimpleX Chat
35f1b145a7
xftp: fix race when sending the file ( #1879 )
...
* xftp: fix race when sending the file
* simpler test
* fix tests
* test
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-25 11:59:06 +01:00
sh
c7163afa3a
ci: cancel stale runs ( #1878 )
2026-09-24 15:33:22 +01:00
Evgeny and Evgeny @ SimpleX Chat
5294b7d8b7
agent: PQ rachet security code, store AD and pqAD in database, bulk reading ( #1874 )
...
* agent: PQ rachet security code, store AD and pqAD in database, bulk reading
* rename to verify code
* diff
* refactor
* query
* reduce transactions
* request binding
* simplify
* fix query and security code derivation
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-23 21:21:09 +01:00