Narasimha-sc
f9aa3fe5e3
Merge commit '8bc4d3601250d9f79dc7e80ead319ec2b6d4a95a' into nd/proxy-stall-repick
2026-10-19 12:31:37 +00:00
Evgeny Poberezkin
8bc4d36012
7.1.0.14
2026-10-19 11:40:39 +01:00
Narasimha-sc
5c61334843
plans: choose another proxy when the chosen proxy keeps failing
2026-10-19 00:10:06 +00:00
Narasimha-sc
1a243fed79
agent: tests for choosing another proxy when the chosen proxy keeps failing
2026-10-19 00:10:06 +00:00
Narasimha-sc
54995ac2f8
agent: choose another proxy when the chosen proxy keeps failing
...
The proxy chosen for a destination relay is kept in smpProxiedRelays and
reused on every retry. It was forgotten only when the proxy could not create
a session to the relay (other than a host error), when the proxy connection
was closed, or when the agent was closed. Two failures kept it:
- connecting to the proxy itself fails (proxy offline): with no proxy
connection to close, retries used this proxy until it was reachable again
or the app restarted;
- a forwarded command fails with PROXY (BROKER e) other than a host error
(e.g. TIMEOUT: the proxy has a session to the relay but cannot reach it):
retries used this proxy while its connection stayed up.
A failed connection to the proxy now forgets it at once: without a live
connection the proxy normally has not received this destination, so choosing
again adds no privacy cost. A request that only waits for another request's
connection does not forget the proxy when its wait times out.
A forwarded command failing with PROXY (BROKER e) other than a host error
starts a failure streak, stored next to the chosen proxy; a successful
command, an error from the destination relay returned through the proxy, or
PROXY (PROTOCOL e), the relay's error to the proxy, clears it. A failure that comes at least proxyFailureInterval (30 s) after the
start of the streak forgets the proxy, so a single error or a burst of errors
keeps it as long as a later forward reaches the relay. The streak functions
are exported for tests.
Failures, successes and deletes change the entry only while it still names
that proxy, also when the proxy disconnects or its relay session fails, so
that they do not change a new choice. After PROXY NO_SESSION, the dead relay
session is removed from the proxy client that handled the request, so that
the retry through the same proxy does not use it again, and that retry no
longer records the proxy as the choice when there is none, so that a
concurrently forgotten proxy is not put back.
2026-10-19 00:10:06 +00: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
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