Evgeny Poberezkin
cb89b963bf
attempt 5
2023-12-18 11:34:25 +00:00
Evgeny Poberezkin
d8ec57602f
handle errors in batch sending
2023-12-16 19:21:08 +00:00
Evgeny Poberezkin
b9a5b7802c
agent: batch sending messages (attempt 4)
2023-12-16 19:14:53 +00:00
Evgeny Poberezkin
560dc55312
agent: notify about polled message processing (for iOS notifications) ( #908 )
...
* agent: notify about polled message processing (for iOS notifications)
* optionally keep key and support re-opening database
* exports
* test that cannot reopen when created with keepKey: false
* set max number of messages to receive for a notification to 3
2023-12-11 13:03:53 +00:00
Evgeny Poberezkin
a860936072
agent: do not account for delivery of stored messages for agent suspension ( #916 )
2023-12-05 23:14:33 +00:00
Alexander Bondarenko
6bffcc8503
compatibility with GHC 8.10.7 ( #906 )
...
* build with ghc-8.10
* add 8.10 to matrix
* cleanup
* stats
* remove getField
* agent
* server
* remote
* space
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-29 12:53:06 +00:00
Alexander Bondarenko
febf9019e2
remote: add controller address preferences ( #905 )
...
* remote: add controller address preferences
* suppress localhost from breaking multicast discovery w/o prefs
* rewrite findCtrlAddress
* refactor
* refactor2
* add tests
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-28 14:12:29 +00:00
Alexander Bondarenko
40ba94ce72
remote: add multicast discovery w/ encrypted announce ( #895 )
...
* Implement multicast discovery
* replace rcConnectMulticast with explicit discoverRCCtrl
* add multicast source/invitation host check
* remove JSON encoding for multicast invitations
* add specific error for announcing "new" controllers
* rename
* set size, rename
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-17 17:56:14 +00:00
Evgeny Poberezkin
3b348a463c
Merge branch 'master' into xrcp
2023-11-14 14:36:21 +00:00
spaced4ndy
7aae6f3cbe
agent: fix case of ratchet synchronization getting stuck in endless loop ( #892 )
2023-11-14 17:55:20 +04:00
Alexander Bondarenko
ecb23c66e0
Extract public RC types ( #887 )
2023-11-07 20:30:28 +00:00
Alexander Bondarenko
1a8dfb4cbe
agent: xrcp implementation for connection via link (no multicast) ( #884 )
...
* WIP: start working on connection invites
startSession/OOB is broken now - the port isn't coming from the actualy assigned one.
* Add invite types
* clean old invite-related types
* apply renames
* Move SessionKeys from Invitation
* Stub host-side keys and handle
* move keys and handles to Types
* add Simplex.RemoteControl.Client
* more keys
* progress
* crypto for sessions
* progress to multicast
* multicast crypto
* add RC TLS server
* agent api for remote control
* WIP: tls client
* fix test
* update encoding to include nonce
* add TODO
* update
* Use network-info to find TransportHost
* request and submit tls client certificate
* WIP: add missing bits for testing RC client
* RCEncryptedHello encoding
* add block encoding
* refactor
* validate known host certificate
* remove some spaghetti
* functional API to host/ctrl clients
* refactor connectRCCtrl_
* refactor connectRCHost
* question
* add type
* fix RC session
* update doc
* update doc 2
* add block on confirmation
* remove unused parameter
* export CtrlSessKeys
* export
* fix parsing
* move test of xrcp handshake
* move KEM to HELLO step
* fix JSON
* type
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-11-07 13:05:18 +00:00
Evgeny Poberezkin
b5f733d2db
agent: use IORef for DRG ( #882 )
2023-10-31 23:52:13 +00:00
spaced4ndy
55a6157880
agent: change invLocks key type to ByteString
2023-10-24 17:20:39 +04:00
spaced4ndy
73d7f84ee3
agent: take invitation lock on join ( #870 )
2023-10-24 16:55:57 +04:00
Evgeny Poberezkin
9d12d76078
add fourmolu ( #868 )
...
* add fourmolu
* linebreak
* simplify
* comment
2023-10-22 09:20:14 +01:00
Evgeny Poberezkin
696fa652a5
agent: always return simplex:/ links in invitations
2023-10-12 14:54:37 +01:00
Evgeny Poberezkin
887ccbcf6c
Merge branch 'master' into master-ghc9
2023-09-10 18:00:33 +01:00
Evgeny Poberezkin
84ce037867
extend SMP protocol to allow creating new queues without subscriptions ( #839 )
...
* Trace auto-subs flag
* Replace Bools with SubscriptionMode
* Handle SMOnlyCreate
* Wire remaining todos
* Update tests and fix
* Bump protocol level
* Apply suggestions from code review
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
* Scrub needs_sub from agent DB
* Scrub a few more needSubs from the agent api
* change API, fix test
* agent: do not subscribe to queue when creating reply queue
* fix encoding
* WIP: SMOnlyCreate test
* Add SM guard for confirmQueue
Allows the test case to pump the allowConnection
reply without getting PROHIBITED.
* Remove tracing
* add noMessages, remove unnecessary getConnectionMessage from test
* add sending messages to the test
---------
Co-authored-by: IC Rainbow <aenor.realm@gmail.com >
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2023-09-10 17:07:19 +01:00
Evgeny Poberezkin
5dc3d739b2
agent: support encrypted local files ( #837 )
...
* agent: support encrypted local files
* migration, update store, api
* tests, fix
* use CF.plain
2023-08-31 22:43:58 +01:00
Evgeny Poberezkin
ed05428227
Merge branch 'master' into master-ghc9
2023-08-25 14:11:51 +01:00
Evgeny Poberezkin
414b019ad4
agent: function to debug agent subscriptions ( #834 )
...
* agent: function to debug agent subscriptions
* add Show instances
2023-08-24 23:19:48 +01:00
Moritz Angermann
002f36dde0
5.4.0.0: use ghc 9.6.2 ( #791 )
...
* Add 9.6 compat
* compile with GHC9.6.2: dependencies, imports, code
* refactor typeclasses
* refactor record dot
* update cabal version
* update github actions
* update direct-sqlcipher
* 5.4.0.0
* update cabal.project
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-08-24 20:22:02 +01:00
Evgeny Poberezkin
b001b748db
agent: rename functions, remove unused code, stabilize tests ( #830 )
...
* agent: rename functions, stabilize tests
* test pattern match
2023-08-24 19:52:58 +01:00
Evgeny Poberezkin
44abb90c63
agent: fix async join to avoid sending HELLO again after restart ( #829 )
...
* agent: fix async join to avoid sending HELLO again after restart
* update test
* add callstack to test
* improve test
2023-08-21 14:35:46 +01:00
Evgeny Poberezkin
b329eb9a86
agent: fix async JOIN ( #827 )
...
* agent: fix async JOIN
* refactor
2023-08-20 18:45:16 +01:00
Evgeny Poberezkin
e2065ab352
agent: track slow SQL queries ( #822 )
...
* agent: track slow SQL queries
* add executeMany
* reduce threshold for slow queries to 50ms
2023-08-12 18:18:10 +01:00
Evgeny Poberezkin
6314bb1706
agent: partially fix message queries, debug message times ( #810 )
...
* agent: partially fix message queries, debug message times
* fix more joins
2023-07-22 13:00:25 +01:00
Evgeny Poberezkin
c54be32135
Revert "agent: expire messages on quota errors ( #801 )" ( #807 )
...
This reverts commit 3fee468051 .
2023-07-22 09:16:06 +01:00
Evgeny Poberezkin
3fee468051
agent: expire messages on quota errors ( #801 )
2023-07-14 18:13:54 +01:00
Evgeny Poberezkin
58cb2855d2
agent: delivery receipts ( #752 )
...
* rfc: delivery receipts
* update doc
* update rfc
* implementation plan, types, schema
* migration, update types
* update types
* rename migration
* export MsgReceiptStatus, JSON encoding
* update rfc, schema
* correction
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* skeleton of the implementation
* more implementation (some tests fail)
* more code, 1 test fails
* fix encoding
* refactor
* refactor
* test, fix
* only send receipts in v3+, test
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* flip condition
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
* agent version 4 required to send receipts
* fix test
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-07-13 22:33:48 +01:00
Evgeny Poberezkin
f76a5ca5b6
agent: catch IO errors correctly in MonadError ( #795 )
...
* agent: catch IO errors correctly in MonadError
* correction
* correction
* utils
* agentFinally to catch IO exceptions in ExceptT
* rename
* remove, inline
* rename utils
* utils unit test
* test to show catch and finally problems
* tryAllErrors
* enable all tests
2023-07-09 18:04:45 +01:00
spaced4ndy
f2657f9c0b
add crypto error to RSYNC event ( #794 )
2023-07-05 18:14:51 +04:00
Evgeny Poberezkin
fe22d9b299
agent api to reconnect all servers ( #792 )
2023-07-04 22:54:45 +01:00
spaced4ndy
0e1562deae
increase connection agent version according to received messages; add version and flags to connection stats, bump currentSMPAgentVersion ( #789 )
2023-06-30 20:19:10 +04:00
spaced4ndy
8be2505fa0
ratchet re-synchronization ( #774 )
...
* ratchet re-synchronization rfc wip
* additions
* additions, types
* fix tests
* re-sync implementation wip
* re-sync implementation 1st rev.
* test wip
* test passes
* doc
* wording
* improve doc schema
* single agreed state
* refactor (1 state variable)
* allowed -> required
* prohibit enqueue
* enqueue
* send via multiple queues
* test with server offline
* clarify errors
* rename
* more tests
* refactor
* rename AgentRKey
* rename AM_CONN_RATCHET_KEY
* more tests
* rename
* write encoded AgentRatchetInfo to AgentRatchetKey info
* move withConnLock
* refactor qDuplex
* re-create ratchet on receiving second key
* invert condition
* refactor
* simplify
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-06-30 14:17:08 +04:00
spaced4ndy
a000419bd7
restore confirmation after client restart ( #783 )
2023-06-29 10:10:34 +04:00
spaced4ndy
c31668ce28
return updated ConnectionStats from switchConnectionAsync ( #777 )
2023-06-19 14:51:14 +04:00
spaced4ndy
2efe1496d2
rename "stop switch" -> "abort switch", add canAbortSwitch to rcv queue info ( #775 )
2023-06-16 13:41:01 +04:00
spaced4ndy
011e1109e9
connection switch - track status, stop switch command ( #764 )
...
* connection switch improvements
* stop in transaction
* refactor
* checks in transaction
* withSwitchingRQ in transaction
* withSwitchedSQ in transaction
* refactor
* refactor
* inverse some cases
* reset snd switch progress on repeat qadd
* remove unused functions
* connection info type
* correction
* SPFinalizing phase, correctly update connection in event
* refactor
* tests
* refactor switch conn lock taking, take lock in switch stop, remove ineligible test
* comment
* corrections
* corrections
* corrections
* refactor
* remove checks in transactions, remove some statuses
* remove diff
* refactor
* refactor tests
* update connection in memory
* revert diff
* corrections
* more tests
* remove statuses, change switching queue lookup
* async queue deletion
* refactor
* lock, phases
* test status
* refactor
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2023-06-15 11:15:46 +04:00
Evgeny Poberezkin
89caf55729
agent: ack message in case of decryption error ( #759 )
2023-05-27 18:28:14 +01:00
spaced4ndy
6c6f22051d
check previous encrypted message hashes for duplicates on decryption errors ( #756 )
2023-05-17 15:42:57 +04:00
spaced4ndy
af3f70829d
xftp: remove user id from internal deletion apis ( #739 )
2023-04-25 12:48:10 +04:00
Evgeny Poberezkin
ed0f8c79a2
xftp: wait for agent in foreground in XFTP workers without delaying suspension ( #721 )
...
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2023-04-13 20:04:38 +04:00
spaced4ndy
e346a81e46
xftp: delete snd files on servers ( #722 )
2023-04-13 17:46:43 +04:00
spaced4ndy
e6e17ec637
xftp: api to delete snd files internally, cleanup snd files, tests ( #719 )
2023-04-12 14:50:40 +04:00
spaced4ndy
d35bd8a954
xftp: restore snd files, expire snd files in agent ( #718 )
2023-04-11 22:00:09 +04:00
spaced4ndy
9c460966b2
xftp: use recoverable send implementation instead of experimental, fix query, tests ( #716 )
2023-04-11 11:10:57 +04:00
spaced4ndy
d0cd34989d
xftp: choose server when creating chunk, retrying with different servers ( #714 )
2023-04-10 19:13:03 +04:00
Evgeny Poberezkin
9f8db13553
xftp: agent API to set and test servers ( #704 )
...
* xftp: agent API to set and test servers
* ProtocolTestStep
* update agent API for XFTP servers
* ci: update ubuntu versions
* disable test hanging on ubuntu
2023-04-05 20:37:03 +01:00