UDP packets get lost easily. We can't just remove
nodes from the routing table at first loss, as it can
create issues in small networks and in cases of temporary
connection failures.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* Clear logs for adding and removing of nodes. routingtable log topic for filtering.
* Makes node ID shortening consistent with other short-id formats
* redundant else block
* fixes dependencies
We really don't need these to be 2 and 4 seconds.
Later we should tune it better based on measurements
or estimates. We should also check the relation between
these three values.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
We do not need that many responses with FindNodeFast, since the
reposes can be ordered by distance
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
initialize wait for response before sending request.
This is needed in cases where the response arrives before
moving to the next instruction, such as a directly connected
test.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* use unix time for ttl
* don't remove all entries on peer removal
* cleanup questionable tuple destructure
* ignore vscode
* fix endians decoding
* allow removing by peerId
* invalidate cache by peerId on remove
* update test
* improve tracing of message exchange
run e.g. as
```
nim c -r -d:debug -d:chronicles_enabled=on -d:chronicles_log_level=TRACE -d:chronicles_sinks=textlines[nocolors,stdout] tests/dht/test_providers.nim >err
```
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* add debug on Handshake timeour
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* queue messages during handshake and send later
If a handshake was already in progress, messages were dropped.
Instead of this, it is better to queue these and send as soon
as the handshake is finished and thus the encryption key is known.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* rename handshakeInProgress to keyexchangeInProgress
Handshake is also a name of a message, which makes previous
name less clear.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* keyexchangeInProgress: do not remove on handshake received
This is the wrong direction, not needed
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* fix cross-connect key exchange
Since key exchange can be started both ways simultaneously, and
these might not get finalised with UDP transport, we can't be
sure what encryption key will be used by the other side:
- the one derived in the key-exchange started by us,
- the one derived in the key-exchange started by the other node.
To alleviate this issue, we store two decryption keys in each session.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
---------
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* encodeMessagePacket: expose haskey
encodeMessagePacket checks for session and behaves differently
based on that. Exposing this difference in behavior.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* improve tracing of message exchange
run e.g. as
```
nim c -r -d:debug -d:chronicles_enabled=on -d:chronicles_log_level=TRACE -d:chronicles_sinks=textlines[nocolors,stdout] tests/dht/test_providers.nim >err
```
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* add debug on Handshake timeour
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* queue messages during handshake and send later
If a handshake was already in progress, messages were dropped.
Instead of this, it is better to queue these and send as soon
as the handshake is finished and thus the encryption key is known.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* rename handshakeInProgress to keyexchangeInProgress
Handshake is also a name of a message, which makes previous
name less clear.
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* keyexchangeInProgress: do not remove on handshake received
This is the wrong direction, not needed
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
---------
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
* make encryption scheme explicit
* supress compiler noise
* make `nimble install` without `-d` work
* move `libp2p_pki_schemes=secp256k1` to config.nims
* fix include