Commit Graph

374 Commits

Author SHA1 Message Date
Dmitriy Ryajov 37d7a03fba use a timed cache in floodsub 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e98ec9fd49 use doAssert for release asserts 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f190c155d3 don't throw on missing peer 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3b9d34116d decrease floodsub traffic 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f9a04dbb9d todo: poll should allow for timeouts 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cfd31c5251 properly handle empty messages 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6cfbf2c124 don't send messages to self 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov a01d1db6a0 prperly close and chronos connections 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 968fd85d49 properly exit readLoop on error/stream end 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 34d1a641de cleanup/test pubsub 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f8872dd51c make log topics consistent 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3c5b77affa correctly identify incoming connection 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 68eb142a7c end multiplex read loop on exception 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cc2072d290 always cleanup connection on exit 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov c7606ce2eb readMsg should never return an empty buffer 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f7e5c8ee30 bring back commented tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov bc46a76029 connection should raise on invalid varint 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 15bae7bec5 use `result` instead of buffer 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f5508be544 yield to chronos in mplex loop 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b5c4eaf9b8 don't use result in oneliners 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 06b759e049 review cleanup 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5ae37cac98 no more buffer resets on len prefixed reads 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov dd3f85965b should not handle transport exceptions 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 99869aa8b8 don't reset buffer on exception 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6baf089bb4 move tomultiaddr to wire.nim 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f3afe0a6ce feat: allow ussage of 0 addrs 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9862064234 changed copyright year 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5b3f93ba1c feat: allow multiple handlers per topic in pubsub 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 2f31fc6940 misc: TODO for timeouts and message limit in mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b270515bb3 feat: make private/public keys Option[T] 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 663ce6c589 misc: nimpretty 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 054085620c logging: switch debug for trace in most cases 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 011df568b7 finished integrating secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3eb0cdd5f7 misc 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9bb892de69 wip: integrating and testing secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 27e4516796 fix breaking test 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b47dc89589 wip: integrating secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ea142f0e6d proxy connection through secio 2019-10-11 08:15:24 +09:00
cheatfate 2d00f6a6db wip: integrating secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f2fb92d1af properly close transport 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov c98e8929bc reverting change 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f39a5cf5e4 temporary fix, until pub/priv keys are Option[T] 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ef89e98479 renaming channel 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 88079a2864 incomming connection handling flow and tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 68d50a97f8 properly initialize hashsets 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9f3b80b60c got pubsub working without signing 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 80267e81ec exit main loop correctly 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 8920cd7d60 misc: pubsub/floodsub and logging 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 4d9444afe9 proper server startup sequence 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5f2d944545 add muxer handler and properly set stream peerinfo 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 32b74c5d1c add logging context 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 875ec346e6 adding bool suport to protobuf methods 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 003b72ec27 adding bool 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 67e10d0747 set mplex channel peerInfo correctly 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 4f158d4e83 adding pubsub interface to switch 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 41aad2e7e6 make peerId an Option[T] 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 177eb71ffa wip: floodsub initial implementation 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 74d2aea63d adding chronicles topics 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 827a8caba6 wip: modeling floodsub 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov bb648c87e1 wip: modeling secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 525646dcc1 handle secure managers correctly 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov fc36de21c1 handle exceptions correctly 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 2febd47e0d don't complete futures twise 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov d27ea5d228 whip initial secio 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 435c69633f adding chronicles logging 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5bc8e7e7b1 remap exceptions 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 116051208a make patterns runtime only 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 93a9fd203a fix: multistream tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e31966b6f8 fix: switch, with identify and mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 701e048ee6 add debug logging 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 54d740949e debug logging 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 0c416e757e make gcsafe 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ddd266f584 small helper to aid in debugging 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b5dcfa9bc4 first attempt to proper channel cleanup 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 65ce1a93fc prevent interleaved channel data 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 8c76799d9e make writes sequential 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e53c87e197 reworked to make msg reading sequential 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov c7fd08e002 use sane defaults 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e5b782f094 mplex testing/interop 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 100f6220b3 dont clash with MultiCodec 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6086038b01 raise correct LP exception on incomplete data 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ba843f4091 wip: interop testing 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 13ca6d253d fix: multistream tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 962f58b436 avoid wrapping in several futures 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 13837619ed plaintext security 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 8338a16aab testing mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b7f999d316 fixing several issues found while testing 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov dee46c4d37 remove unneded var 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 14d9150bbb moving modules to apropriate directories 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 2f402d68e1 docs/wording 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 60245a065d fix: don't call conn handler on dials 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 0f52a6e798 fix: switch and tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6f8de062bb fix: multistream 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5237fc8b12 test multiple streams with mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 746987156d reworked switch 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 0b784c5b58 don't pass stream handler through contructor 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3cd19ddc47 change root object from ref to obj 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f8a942ed67 make peerinfo an optional type 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9889bd9cbf return proto string from select, instead of bool 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cc595f7947 allow selecting one of many protos in identify 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov a7e5fde6f7 check identify request against known pubkey 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ec351cc2b0 misc: cleanup mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6ce2782e5c add missing test 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 80c68206f7 documentation 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9b485b3082 feat: half closed channels 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 6058a3fc69 split mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 1b02c5e4e4 don't block main loop 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 36917c5adc disable switch tests temporarily 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov a0aaa29739 wip: mplex and mplex tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cc26d4e040 prevent already closed errors 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 8549ce76bb add init proc to bufferedstream 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 917e0553e1 fix: tests and docs 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 96cd7bcf50 wip: mplex tests 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b26d1ac23a cosmetic 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 93bd7f623c remove generic constructor 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 9bc7043f48 export read size const 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cae4910427 add custom new proc 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 40e75a7635 remove useless methods 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 4edd2c9f8a mplex move everything to one file 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ad1eaffdd6 make writeHandler async 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov d63e0c003b add proper pragmas 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5177bbb492 fix: return on read error 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 2c3c23c7c6 documentation 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov f3cc6fbef0 use correct names 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 7bd1e04d6f wip: modeling mplex 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 7f0627378c misc 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov fceea14aa5 adding bufferred stream 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov cbf0f4f186 move streams to own dir 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ef7a0b41e4 add switch tests to native 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 0f3d024c0a avoid unnecesary temps 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 18b9765525 fix: cleaning up based on jangko review 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov db1aad3df0 adding switch e2e test 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 79129ea6d1 `handles` should be called on concrete transport 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3df92e0d67 wip: switch 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 152c1e3c14 close connections asyncronously 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 022a248ca3 reworked protocol 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 3d74a4c82a add base upgrade method 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 71282fa442 make matcher func gcsafe 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 1cef1b803b don't await twise 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e2b04fc30d add gcsafe pragma 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov ca4ccbe37f don't use method as handler in protocol base 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e7c3412d69 expose private and public keys 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov e5be1fcaee wip: switch 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 5eced0abee rename multistream 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov aa2dfababd wip: identify 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 682fecc395 make things public 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov 054bd365af protocol handler method should receive context 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov b85d616a13 call the handler with the protocol context 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov a9c9788356 we don't need the switch in the protos after all 2019-10-11 08:15:24 +09:00
Dmitriy Ryajov a7709b8afc use gcsafe in closures 2019-10-11 08:15:24 +09:00