Dmitriy Ryajov
007b0219f3
use ECDSA as defaults, faster in tests
2020-01-09 12:55:21 -06:00
Dmitriy Ryajov
667691f784
send messages in batches
2020-01-09 12:55:21 -06:00
Dmitriy Ryajov
cd8961cfb9
close and cleanup connections
2020-01-09 12:55:21 -06:00
Dmitriy Ryajov
c6561b8851
add timeouts to connection/secio
2020-01-09 12:55:21 -06:00
cheatfate
107e71203d
Fix #61 .
2020-01-09 17:38:10 +02:00
Dmitriy Ryajov
58cdefac21
don't expose private api
2019-12-24 10:35:35 -06:00
Dmitriy Ryajov
0fb1f1c5b8
strenghten pubsub interop testing
2019-12-24 10:35:35 -06:00
Dmitriy Ryajov
8714c66353
allow empty protocol string in dial
2019-12-24 10:35:35 -06:00
Dmitriy Ryajov
68cc57669e
Feat/pubsub validators ( #58 )
...
* feat: adding validator hooks to pubsub
* expose add/remove validators on switch
* do less unnecessary copyng
2019-12-16 23:24:03 -06:00
Dmitriy Ryajov
b6b0cdea98
fix: inconsistent error handling ( #56 )
...
* fix: inconsistent error handling
* fixing a few more returns
* remov reduntant returns
* feat: dont sleep in readLoop
2019-12-13 09:25:07 -06:00
Yuriy Glukhov
e0aae6d8ac
Moved base32, 58 and 64 to stew
2019-12-13 16:00:39 +02:00
Dmitriy Ryajov
293a219dbe
Cleanup ( #55 )
...
* fix: don't allow replacing pubkey
* fix: several small improvements
* removing pubkey setter
* improove error handling
* remove the use of Option[T] if not needed
* don't use optional
* fix-ci: temporarily pin p2pd to a working tag
* fix example to comply with latest changes
* bumping p2pd again to a higher version
2019-12-10 14:50:35 -06:00
Zahary Karadjov
77e866d29a
Address review comments
2019-12-09 19:17:29 +02:00
Zahary Karadjov
454f658ba8
Fixes and tweaks related to the beacon node integration
...
* Bugfix: Dialing an already connected peer may lead to crash
* Introduced a standard_setup module allowing to instantiate
the `Switch` object in an easier manner.
* Added `Switch.disconnect(peer)`
* Trailing space removed (sorry about polluting the diff)
2019-12-08 23:58:43 +02:00
Dmitriy Ryajov
5f6fcc3d90
extract public and private keys fields from peerid ( #44 )
...
* extract public and private keys fields from peerid
* allow assigning a public key
* cleaned up TODOs
* make pubsub prefix a const
* public key should be an `Option`
2019-12-07 10:36:39 -06:00
Dmitriy Ryajov
e623e70e7b
PubSub (Gossip & Flood) Implementation ( #36 )
...
This adds gossipsub and floodsub, as well as basic interop testing with the go libp2p daemon.
* add close event
* wip: gossipsub
* splitting rpc message
* making message handling more consistent
* initial gossipsub implementation
* feat: nim 1.0 cleanup
* wip: gossipsub protobuf
* adding encoding/decoding of gossipsub messages
* add disconnect handler
* add proper gossipsub msg handling
* misc: cleanup for nim 1.0
* splitting floodsub and gossipsub tests
* feat: add mesh rebalansing
* test pubsub
* add mesh rebalansing tests
* testing mesh maintenance
* finishing mcache implementatin
* wip: commenting out broken tests
* wip: don't run heartbeat for now
* switchout debug for trace logging
* testing gossip peer selection algorithm
* test stream piping
* more work around message amplification
* get the peerid from message
* use timed cache as backing store
* allow setting timeout in constructor
* several changes to improve performance
* more through testing of msg amplification
* prevent gc issues
* allow piping to self and prevent deadlocks
* improove floodsub
* allow running hook on cache eviction
* prevent race conditions
* prevent race conditions and improove tests
* use hashes as cache keys
* removing useless file
* don't create a new seq
* re-enable pubsub tests
* fix imports
* reduce number of runs to speed up tests
* break out control message processing
* normalize sleeps between steps
* implement proper transport filtering
* initial interop testing
* clean up floodsub publish logic
* allow dialing without a protocol
* adding multiple reads/writes
* use protobuf varint in mplex
* don't loose conn's peerInfo
* initial interop pubsub tests
* don't duplicate connections/peers
* bring back interop tests
* wip: interop
* re-enable interop and daemon tests
* add multiple read write tests from handlers
* don't cleanup channel prematurely
* use correct channel to send/receive msgs
* adjust tests with latest changes
* include interop tests
* remove temp logging output
* fix ci
* use correct public key serialization
* additional tests for pubsub interop
2019-12-05 20:16:18 -06:00
Dmitriy Ryajov
903e79ede1
Feat/conn cleanup ( #41 )
...
Backporting proper connection cleanup from #36 to align with latest chronos changes.
* add close event
* use proper varint encoding
* add proper channel cleanup in mplex
* add connection cleanup in secio
* tidy up
* add dollar operator
* fix tests
* don't close connections prematurely
* handle closing streams properly
* misc
* implement address filtering logic
* adding pipe tests
* don't use gcsafe if not needed
* misc
* proper connection cleanup and stream muxing
* re-enable pubsub tests
2019-12-03 22:44:54 -06:00
Dmitriy Ryajov
1df16bdbce
set log level to trace - not enabled by default
2019-12-02 18:43:21 -06:00
Zahary Karadjov
f9eed172d4
Don't handle Exception
2019-12-03 01:26:59 +02:00
Dmitriy Ryajov
26366f8b56
use `Exception` to emulate `getCurrentException()`
2019-12-03 01:26:59 +02:00
Dmitriy Ryajov
a5b051a14f
fix: use exception `msg` field in logs
2019-12-03 01:26:59 +02:00
Dmitriy Ryajov
9e437a681b
fix: revert to proper exception handling
2019-12-03 01:26:59 +02:00
cheatfate
dde8c01448
Workaround for https://github.com/nim-lang/Nim/issues/12764 .
...
Remove usage of getCurrentException().
2019-11-28 20:58:56 +02:00
Dmitriy Ryajov
fe3c1d45bb
misc: removing unneded accessors
2019-11-06 12:13:21 -06:00
Ștefan Talpalaru
f3fc763895
daemonapi: direct p2pd's output to parent's streams
2019-11-05 21:16:56 +01:00
cheatfate
76fee97724
Fix MultiAddress.init(PeerID) compilation problem.
2019-11-04 20:57:17 +02:00
cheatfate
833e8c9406
Fix overflow problem.
...
Fix compilation warnings.
2019-10-29 20:51:48 +02:00
Dmitriy Ryajov
400218ba01
fixing remaining overflows in BE/LE
2019-10-29 11:02:28 -06:00
Dmitriy Ryajov
541f0f2a41
avoid buffer overflow on BE/LE conversions
2019-10-29 10:10:19 -06:00
cheatfate
cc0d45c482
Add protoAddress() utility procedure.
2019-10-29 15:38:37 +02:00
Dmitriy Ryajov
21af081066
remove init in favor of upstream init
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
a4431a86a1
fixing windows build issue
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
0b77c8c6e3
add init from TransportAddress to multiaddress
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
ae7b354819
unused directory
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
9e16fd020e
use PeerID `==` for comparisons
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
018da65708
compare peer string ids, rather than keys
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
3194e3ac5b
fixes after building with 0.20.2
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
bb277d4b56
readLp should warn on ignored exceptions
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
464d75d159
minor style fixes
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
2066e81658
set default timeout to 10 secs
2019-10-11 08:15:24 +09:00
Dmitriy Ryajov
1d4b51413e
option to allow triggering own handlers on publish
2019-10-11 08:15:24 +09:00
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