Commit graph

80 commits

Author SHA1 Message Date
Alain Zscheile
30daf44281 Distributor should excert backpressure due to filtering overhead 2022-11-27 21:46:15 +01:00
Alain Zscheile
c74d1b061c refactor(PacketSpool): :keep_only should be a call, make :fetch more resilient 2022-11-27 19:18:12 +01:00
Alain Zscheile
85e31bbca0 scaling fix: coalesce session push notifications 2022-11-27 19:04:15 +01:00
Alain Zscheile
d97a7bff81 SessionManager: fix state corruption 2022-11-27 17:33:22 +01:00
Alain Zscheile
35b82e3a7b SessionManager: fix misuse of :dets.delete_object 2022-11-27 17:30:48 +01:00
Alain Zscheile
3ed0806df9 fix SessionManager set_for_all 2022-11-27 17:24:39 +01:00
Alain Zscheile
faec74dc0c debug Distributor 2022-11-27 17:15:45 +01:00
Alain Zscheile
5206a83324 get rid of diverging SessionPushed behavior 2022-11-27 17:06:22 +01:00
Alain Zscheile
cfae3386c5 fix SessionManager crash on MapSet/all_keys 2022-11-27 17:00:58 +01:00
Alain Zscheile
73ae3ebe6e fix SessionPushed handling 2022-11-27 16:56:29 +01:00
Alain Zscheile
3ac8b8e07c increase reliability of sessions 2022-11-27 13:30:17 +01:00
Alain Zscheile
7bbf59625a add ability to supply arbitrary filters 2022-11-27 00:40:44 +01:00
Alain Zscheile
c48367ff09 send public key with every message
this is more efficient and solves key distribution concerns
2022-11-26 23:41:56 +01:00
Alain Zscheile
d8f2dc3e66 batch calls to SessionManager and PacketSpool 2022-11-26 22:13:58 +01:00
Alain Zscheile
5abd39c1e3 fix handling of edge cases 2022-11-26 21:56:29 +01:00
Alain Zscheile
f45bdf405a chore: run 'mix format' 2022-11-26 21:51:37 +01:00
Alain Zscheile
f4eca16582 session keys for upstream connections should be two-sided 2022-11-26 21:50:49 +01:00
Alain Zscheile
6b2c5b2695 only call SessionManager when sesskey is not nil 2022-11-26 18:35:05 +01:00
Alain Zscheile
fab022df18 chore: run mix format 2022-11-26 16:04:44 +01:00
Alain Zscheile
35a393c7fa pull: choose packet source based upon if sesskey is set 2022-11-26 16:04:21 +01:00
Alain Zscheile
e5c0c9ea2b only store packets when we have any sessions 2022-11-26 15:49:39 +01:00
Alain Zscheile
b0964e369f make packet spool errors fatal 2022-11-26 15:46:02 +01:00
Alain Zscheile
1f056a298c fix simple bugs in persistence 2022-11-26 15:42:15 +01:00
Alain Zscheile
dc7db318e8 first try at persistence 2022-11-26 15:34:51 +01:00
Alain Zscheile
61312e68ce add PacketSpool manager 2022-11-26 14:30:53 +01:00
Alain Zscheile
bf46142dab decode XferInner only when appropriate
That is, make sure that the signature is valid before decoding
2022-11-26 13:00:53 +01:00
Alain Zscheile
025b4a826f make TTL hop-based
this avoid dozens of issues regarding time warps, and also solves the issue
of infinitely cycling packets when the system is under saturation, as now
packets expire after passing the set amount of hops
2022-11-26 12:55:48 +01:00
Alain Zscheile
ecf27c1f01 always discard already seen packets 2022-11-26 02:29:26 +01:00
Alain Zscheile
163979612d distr: fix superfluous requestpull due to bothed origin skip 2022-11-26 02:01:16 +01:00
Alain Zscheile
8ecdfa6701 debug SessionManager (superfluous requestpull) 2022-11-26 01:57:49 +01:00
Alain Zscheile
a81c306107 fix state corruption in SessionManager 2022-11-26 01:46:34 +01:00
Alain Zscheile
0d508cc142 directly use exit keyword 2022-11-26 00:58:04 +01:00
Alain Zscheile
8cf076bf5f Floof.serve should be always tail-recursive 2022-11-26 00:54:03 +01:00
Alain Zscheile
e4d71e0b88 put DistributorSeen into separate module to prevent indirection via Distributor 2022-11-26 00:23:53 +01:00
Alain Zscheile
ffc32e3036 distr: completely get rid of key handling 2022-11-26 00:04:11 +01:00
Alain Zscheile
4c5c0cb865 SessMgr/Distr: improve handling of session hand-over 2022-11-26 00:00:44 +01:00
Alain Zscheile
f4ae49db83 distr: fix wrong process linking 2022-11-25 23:49:07 +01:00
Alain Zscheile
f5fc1b0033 SessionManager: factor out subscription management 2022-11-25 23:40:12 +01:00
Alain Zscheile
66fe833492 fix formatting and improve SessMgr set_for_all loop 2022-11-25 23:11:26 +01:00
Alain Zscheile
aac69ef4bc SessionManager: get rid of code duplication 2022-11-25 23:08:23 +01:00
Alain Zscheile
5bcccba4e8 improve SessionManager further 2022-11-25 22:58:09 +01:00
Alain Zscheile
19409b738b make session handling more robust
previously, a crashing client process would take the whole backlog
with it. now, the SessionManager manages the backlog if a session is setup
2022-11-25 17:16:44 +01:00
Alain Zscheile
682d46baef sessmgr: rename deattach -> detach 2022-11-25 02:00:15 +01:00
Alain Zscheile
7e1b6ff303 omit unnecessary double check of Enum.empty? surrounding send_summary 2022-11-25 01:57:25 +01:00
Alain Zscheile
a6e99faf74 omit unnecessary summary packets 2022-11-25 01:50:11 +01:00
Alain Zscheile
491037e900 fix crash in partition_hashes due to missing Map->list conversion 2022-11-25 01:46:51 +01:00
Alain Zscheile
7d5a88bed8 protocol decode only works on bitstrings 2022-11-25 01:44:19 +01:00
Alain Zscheile
2503fe9a11 more debugging 2022-11-25 01:35:02 +01:00
Alain Zscheile
80aefd160a fix crash at summary building 2022-11-25 01:31:00 +01:00
Alain Zscheile
2a6405cd71 fix+allow usage of session keys for upstream connections 2022-11-25 01:29:17 +01:00