JRoberts
698b5c4146
set correct snd queue as primary on QTEST ( #596 )
2023-01-09 10:37:57 +00:00
Evgeny Poberezkin
acfa65200a
deduplicate connections in connect/disconnect responses, log errors in tPut ( #593 )
...
* remove TODO for old handshake version (this HELLO is not sent now)
* deduplicate connections in responses and verify server in the list of subscribed queues
* log transport and LargeMsg in tPut (the results it returns are only used in the tests)
* refactor
* refactor
2023-01-06 17:14:49 +00:00
Evgeny Poberezkin
61e0c346df
simplify C.sign, Crypto tests, triage TODOs ( #592 )
...
* simplify C.sign, Crypto tests, triage TODOs
* update condition
* remove todos
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2023-01-06 15:34:05 +00:00
JRoberts
11c235a8a3
check token status when sending verification notification ( #594 )
2023-01-06 19:16:55 +04:00
Evgeny Poberezkin
058e3ac55e
send/process "quota exceeded" message from SMP server when sender gets ERR QUOTA ( #585 )
...
* send "quota exceeded" message from SMP server when sender gets ERR QUOTA (ignored in the agent for now)
* send msg quota to the recipient to indicate that sender got ERR QUOTA, test
* switch between slow/fast retry intervals (tests do not pass yet)
* send QCONT message, refactor RetryInterval, test
* refactor
* remove comment
* remove space
* unit test for withRetryLock2
* refactor
2023-01-04 14:10:13 +00:00
Evgeny Poberezkin
aa17cc55c1
collect agent stats ( #579 )
...
* collect agent stats
* remove comment
2022-12-26 12:02:20 +00:00
Evgeny Poberezkin
fb21d9836e
agent: api to get hash of ratchet associated data for connection verification ( #577 )
...
* agent: api to get hash of ratchet associated data for connection verification
* enable all tests
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-12-09 09:41:12 +00:00
Evgeny Poberezkin
e4842f4f47
agent: include server address string into BROKER errors ( #575 )
...
* agent: include server address string into BROKER errors
* eol
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-11-30 08:25:07 +00:00
Evgeny Poberezkin
f3b6ed4db0
agent API for SMP server test ( #563 )
...
* agent API for SMP server test
* add JSON encoding
2022-11-15 07:50:46 +00:00
Evgeny Poberezkin
e281efdcb8
server: SMP basic auth ( #561 )
...
* server: SMP basic auth
* update ini default
* rfc, types
* tests
* update INI file
* typo
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* refactor
* update INI options, log new queue creation mode on start (on/off/requires auth)
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-11-12 22:29:36 +00:00
JRoberts
d9a0e78b04
add optional client data field to ConnectionRequestUri ( #551 )
...
* add optional auxiliary data field to ConnectionRequestUri
* remove import
* fix, test
* fix StrEncoding Char
* data only in sync command, type
* fixing
* queryParamStr
* safeDecodeUtf8
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2022-11-01 13:42:44 +04:00
Evgeny Poberezkin
4beaafa35a
add queue directions to SWITCH events ( #553 )
2022-11-01 08:44:32 +00:00
Evgeny Poberezkin
8d9816809f
simplify queue rotation protocol ( #550 )
...
* simplify queue rotation protocol
* use simplified rotation protocol, update tests
* simplify schema
* delete all connection queues
* refactor
* switch notifications to the new queue, tests
* remove TODO
* refactor
* rfc correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* remove duplicate set active
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-31 13:33:28 +04:00
Evgeny Poberezkin
eb5c1c78cb
connection queue redundancy and rotation ( #521 )
...
* rfc: queue rotation
* update rfc
* messages for queue rotation
* allow multiple subscribed queues per connection in Agent/Client.hs
* refactor
* fix module name
* allow multiple queues in duplex connection type
* update commands
* add indices
* addConnectionRcvQueue
* switch connection to another queue (WIP)
* update schema/protocol
* switching queue works, but sending messages after the switch fails
* messages are delivered after rotation
* use connection-scoped queue ID
* rename queue records fields
* refactor using SMPQueue class/instances
* simplify queries
* QKEY: check queue is not secured, refactor
* update rfc
* mark queue as primary in QUSE
* queue rotation errors
* fix async ack
* fix async ACK to send OK
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
* use SWCH command
* rename
* take into account only active queue subscription when determining connection result if at least one queue is active
* remove comment
* only enable notifications for connections with enableNtfs = True
* async test (WIP)
* async queue rotation test
* simplify combining results
* test with 2 servers
* fix unused subscribeConnection
* switch to cabal build
* increase build timeout
* increase delay in async test
* skip queue rotation tests
* build matrix
* step name
* use ubuntu-18.04 in build matrix
* enable rotation tests
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-10-29 18:57:01 +01:00
Evgeny Poberezkin
19aef52135
debug agent locks
2022-10-22 16:43:14 +01:00
Evgeny Poberezkin
d06bb2b9c5
use KDF in X3DH ( #548 )
...
* use KDF in X3DH
* configure ratchet version via agent config, test matrix
* add comment
2022-10-20 11:03:19 +01:00
JRoberts
f97c1a7712
agent: acceptContactAsync functional api ( #545 )
2022-10-13 19:46:32 +04:00
Evgeny Poberezkin
10e0e58ec3
improve concurrency by not holding connection lock while async command retries ( #544 )
...
* improve concurrency by not holding connection lock while async command retries
* fix
* debug test
2022-10-09 18:00:42 +01:00
Evgeny Poberezkin
0fa40fbfb0
fix: connection-level locks ( #543 )
...
* fix: connection-level locks
* add context to store error
* convert SERatchetNotFound to CONN NOT_FOUND
2022-10-04 14:36:51 +01:00
Evgeny Poberezkin
f4baa5d672
increase concurrency with per-connection locks ( #542 )
...
* increase concurrency with per-connection locks
* only send CONNECT if the client wasnt connected already
2022-10-04 09:58:19 +01:00
Evgeny Poberezkin
29332a5e9f
lints ( #539 )
...
* lints
* revert
* add import
* remove StrictData
2022-10-01 11:51:52 +01:00
Evgeny Poberezkin
9cd5f96fe4
import
2022-09-30 12:36:21 +01:00
JRoberts
a2eea4f18f
add deleteConnectionAsync functional api ( #538 )
2022-09-29 21:11:36 +04:00
Evgeny Poberezkin
41d3c14157
secure queue asynchronously ( #532 )
...
* secure queue asynchronously
* delete commands with internal logic errors
2022-09-20 15:11:35 +01:00
Evgeny Poberezkin
d4962daf11
internal async commands ( #530 )
...
* internal async commands
* rename
* remove GADT from AgentCommand
2022-09-18 14:02:20 +01:00
Evgeny Poberezkin
a3f58fdc6b
api to execute any sql query ( #529 )
...
* api to execute any sql query
* agent api
2022-09-17 15:08:58 +01:00
Evgeny Poberezkin
e3e05d474d
wrap agent command for async command processing, to allow extension with internal commands ( #528 )
...
* wrap agent command for async command processing, to allow extension with internal commands
* change encoding for constructor
2022-09-17 14:08:49 +01:00
Evgeny Poberezkin
13a9eee0cf
cancel threads asynchronously ( #527 )
2022-09-17 00:18:58 +01:00
Evgeny Poberezkin
959ae34f16
fix agent not stopping and race conditions ( #526 )
...
* fix agent not stopping and race conditions
* simplify
2022-09-16 13:42:13 +01:00
Evgeny Poberezkin
8c1a9c529d
fix async commands ( #525 )
2022-09-16 08:36:11 +01:00
Evgeny Poberezkin
605e6c64c6
simplify subscribeConnections ( #522 )
2022-09-12 13:31:41 +01:00
Evgeny Poberezkin
bab6a1577b
correlation IDs and command tags for async commands ( #519 )
...
* agent protocol command tags
* store/send async command correlation IDs
* fix, refactor
* delete failed command
2022-09-10 16:33:15 +01:00
Evgeny Poberezkin
ca6164167e
fix selecting different SMP server ( #518 )
...
* fix selecting different SMP server
* use different server with JOIN
2022-09-10 13:38:48 +01:00
Evgeny Poberezkin
6adbc56021
try async commands without servers on different servers ( #516 )
...
* refactor
* retry commands with different servers
* refactor
* remove comment
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com >
2022-09-09 12:30:27 +01:00
JRoberts
882d2b123b
agent async commands ( #513 )
...
* wip
* wip
* wip
* wip
* don't delete conn on join failure in async mode
* test restart
* remove unused pragma
* simplify restore
* rename variable
* refactor
* refactor
* split
* remove error
* prohibit async join via contact request
* refactor subscribeConnections
* simplify
* resum command processing on subscriptions
* unfocus tests
* schema
* remove do
* rename variable
* corrections
* move code
* refactor getPendingCommands
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2022-09-08 20:27:56 +04:00
Evgeny Poberezkin
da5058a0c4
remove connId from message delivery queue keys ( #515 )
2022-09-06 14:39:50 +01:00
JRoberts
b215bd954d
remove token if token replace fails with permanent error ( #511 )
2022-08-31 21:12:44 +04:00
Evgeny Poberezkin
1459a0613a
set invitation as not accepted in case of join error ( #505 )
...
* set invitation as not accepted in case of join error
* remove unused name
2022-08-25 12:17:55 +01:00
Evgeny Poberezkin
a7b39b710c
fix toggleConnectionNtfs ( #503 )
2022-08-20 13:26:25 +01:00
Evgeny Poberezkin
212a9bc4ab
enable/disable connection notifications ( #501 )
...
* enable/disable connection notifications
* filter connections when intializing/disabling subscriptions
* fix
* fix 2
* add delay
* increase test delay
* increase test delay
* fix
* increase test delays
* increase test delays
2022-08-19 15:23:57 +01:00
Evgeny Poberezkin
0437796232
support multiple server hosts with notifications ( #498 )
...
* support multiple server hosts with notifications
* remove unused type
* remove unused import
* update server hosts during parsing
2022-08-14 21:10:34 +01:00
Evgeny Poberezkin
02bba01c16
send host events when server hosts are connected and disconnected ( #496 )
2022-08-13 11:57:36 +01:00
Evgeny Poberezkin
68138c08d2
support multiple server hostnames per queue ( #494 )
...
* store SMP client version per queue
* use versioned format for queue addresses (not compatible with v1)
* multiple server hosts in queue URI/data, versioned encoding (cross-version tests fail)
* choose server host based on socksProxy setting
* test works
* multiple server addresses mostly work
* add onion hosts for provided servers
* update SMP hosts
2022-08-12 11:32:04 +01:00
Evgeny Poberezkin
6bfaa4985e
expire messages after 2 days, increase max message sending interval ( #490 )
...
* expire messages after 2 days, increase max message sending interval
* rename
2022-08-11 10:15:08 +01:00
Evgeny Poberezkin
7d99c4b35c
reconnect agent clients on any network config change ( #489 )
...
* reconnect agent clients on any network config change
* add Eq instances
2022-08-03 09:59:49 +01:00
Evgeny Poberezkin
e9db0a1162
allow passing all network configuration to the agent ( #488 )
2022-08-02 13:30:00 +01:00
Evgeny Poberezkin
fcaddb7848
agent functions to get/set network configuration ( #484 )
...
* agent functions to get/set network configuration
* fix condition
2022-07-25 13:50:46 +01:00
Evgeny Poberezkin
eb1f9370c1
fix GET from contact connection ( #480 )
2022-07-21 19:42:31 +01:00
Evgeny Poberezkin
d810db4eed
send servers in agent events ( #478 )
...
* send servers in agent events
* remove some changes
* command/function to get connection servers
* getConnectionServers return type
2022-07-20 13:56:43 +01:00
Evgeny Poberezkin
1ce63bee44
create notification subscriptions in batch subscribe ( #477 )
...
* create notification subscriptions in batch subscribe
* refactor
* refactor
2022-07-19 09:30:17 +01:00