Ștefan Talpalaru
ea03e66485
nat: getPublicRoutePrefSrcOrExternalIP() ( #496 )
...
* nat: getPublicRoutePrefSrcOrExternalIP()
And some refactoring to minimise code duplication.
2022-03-31 16:07:28 +02:00
Ștefan Talpalaru
5a78e2fe23
disc: updateExternalIp() ( #495 )
...
* disc: updateExternalIp()
New public proc that can be used to inform the discovery subsystem about
a changed external IP (as reported by UPnP/NAT-PMP in some other module).
2022-03-30 12:52:45 +02:00
KonradStaniec
c28597fee5
Change closing proc ( #492 )
2022-03-28 12:35:08 +02:00
Jordan Hrycaj
4c7cdcaaf2
Merge pull request #484 from status-im/jordan/nethermind-sync
...
Jordan/nethermind sync
2022-03-28 09:34:51 +01:00
Jordan Hrycaj
03924d672c
Merge pull request #494 from status-im/mitigate-rlp-annoyances
...
Mitigating RLP annoyances
2022-03-25 15:37:26 +00:00
Jordan Hrycaj
f214dd8db3
Update eth/p2p/rlpx.nim
...
Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2022-03-25 09:11:47 +00:00
Jordan Hrycaj
2e41d2892e
Update eth/p2p/rlpx.nim
...
Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2022-03-25 09:11:39 +00:00
Jordan Hrycaj
96d07cdea6
Update eth/p2p/rlpx.nim
...
Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2022-03-25 09:11:23 +00:00
Jordan Hrycaj
499e542263
Update eth/p2p/rlpx.nim
...
Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2022-03-25 09:11:15 +00:00
Jordan Hrycaj
1d8a9cf01c
Update eth/p2p/rlpx.nim
...
Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2022-03-25 09:11:05 +00:00
KonradStaniec
f79b79f826
Fix defect in uTP buffer ( #493 )
2022-03-24 15:56:00 +01:00
Jordan Hrycaj
944d7a4069
Mitigating RLP annoyances
...
why:
Rlp errors throw exceptions which cause the dispatcher loop to
terminate the current session immediately.
details:
The DisconnectionReasonList message requires a single entry list.
Observed and now accepted deviations are:
Geth: single byte number
bor(a Geth fork): blobbed single entry list containing a number
2022-03-24 14:49:15 +00:00
Jordan Hrycaj
4bc020384f
Rebase & make chunked RLPx messages optional by a compiler flag
...
why:
This is a legacy feature and its usage should peter out over time.
details:
Use -d:chunked_rlpx_enabled for enabling chunked RLPx message handling.
2022-03-22 17:44:29 +00:00
Jordan Hrycaj
2ff455f26d
Support obsolete chunked RLPx wire protocol
...
why:
For some reason, Nethermind insists on sending chunked messages to
the syncing peer. Unfortunately, for the test networks the Nethermind
modes are the importent ones as they speak eth/65 as well while others
like Geth only support eth/66 which is not implemented here, yet.
2022-03-22 16:25:05 +00:00
Jordan Hrycaj
0feefab9ce
Prevent from NULL-message SEGFAULTs
...
why:
There were cases with NULL entries in the message sequence (as indexed
by msgId.)
2022-03-22 16:25:05 +00:00
KonradStaniec
e794c149f5
Fix compilation error ( #490 )
2022-03-18 15:53:51 +01:00
KonradStaniec
0e20fd6565
Utp improvements ( #489 )
...
* Move connection finalization to separate function
* Do not process data unless in correct state
2022-03-18 08:13:17 +01:00
KonradStaniec
f16f175412
Add metrics to utp router ( #488 )
...
* Add metrics to utp router
2022-03-17 10:53:46 +01:00
Ștefan Talpalaru
7b448ed406
net/nat.nim: "raises" annotations ( #487 )
2022-03-16 15:21:56 +01:00
Kim De Mey
e62fdfe6f1
Add bind ip and bind port for eth1 rlpx and discovery protocols ( #485 )
...
Includes some small refactor on usage of result and Nim style
according to style guide.
2022-03-15 18:08:15 +01:00
KonradStaniec
dff9040cc1
Fix bug when reading till eof ( #483 )
2022-03-03 22:38:13 +01:00
jangko
6c4d04562d
add bootnodes test
2022-02-27 11:53:11 +07:00
jangko
622e6489d8
EIP-4399 changes: random -> prevRandao
2022-02-27 11:40:15 +07:00
jangko
63add129b8
replace two bootnodes
...
see https://github.com/ethereum/go-ethereum/pull/24432/files
and https://github.com/status-im/nimbus-eth1/issues/978
2022-02-27 10:17:56 +07:00
KonradStaniec
8ef6b13b1b
Add event loop to socket ( #475 )
...
- add eventLoop to control all incoming events
- change semantic of write to asynchronously block only when send buffer is full, and not when bytes do not fit into send window
- change handling of receive buffer, to start dropping packets if the reorder buffer and receive buffer are full. Old behaviour was to async block unless there is space which could lead to resource exhaustion attacks
2022-02-24 18:22:44 +01:00
Zahary Karadjov
f947827c70
Debug logs providing info for the initial discoveryv5 configuration
2022-02-18 17:42:37 +02:00
KonradStaniec
779d767b02
Add more tests stressing conccurent reading and writing on utp socket ( #474 )
...
* Add more tests stressing concurrent reading and writing
* Fix bug when remote window dropped below packet size
2022-02-10 08:05:44 +01:00
Kim De Mey
05ef9a8e00
More --styleCheck fixes for discoveryv5 and eth/common ( #473 )
2022-02-03 15:51:08 +01:00
Kim De Mey
41edd4a3f2
Add DiscoveryConfig to tune routing table ip limits and bitPerHops ( #471 )
2022-02-02 15:29:45 +01:00
jangko
cf95b688e6
EIP-4399 preparation
...
From EIP-4399 spec:
Renaming
The mixHash field SHOULD further be renamed to random.
...
2022-02-01 13:41:50 +07:00
Jacek Sieka
ce4acc168c
kvstore: simplified stmt exec iterator ( #467 )
2022-01-28 15:23:41 +02:00
KonradStaniec
5791afccc3
Implement fast resend logic for selective acks ( #468 )
...
* Implement fast resend logic for selective acks
2022-01-27 11:07:40 +01:00
KonradStaniec
7afd44d33e
Implement fast resend logic ( #466 )
2022-01-26 09:49:34 +01:00
KonradStaniec
9a7b1afe9b
Add custom talkreq implementation ( #464 )
...
* Add custom talkreq implementation to utp over discv5
2022-01-24 11:58:35 +01:00
KonradStaniec
4e2b340af6
Fix sudden window drop bug ( #465 )
...
Fixes problem which caused drop of maxWindow to the size of
only one packet in case of only one packet hitting timeout.
2022-01-21 14:48:01 +01:00
KonradStaniec
45348e7664
Add more logs to utp ( #463 )
...
* Add more logs to utp
* Change initial timeout for inc socket to positive value
2022-01-20 13:20:30 +01:00
KonradStaniec
b2dab4be08
Re-send acks for old duplicated packets ( #462 )
...
* Re-send acks for old duplicated packets
2022-01-20 09:22:53 +01:00
Kim De Mey
26ab9b078e
Minor adjustments in utp_discv5_protocol ( #459 )
...
- Move SocketConfig parameter location
- Reuse rng from disc5 protocol
- add exports
- Some whitespace clean-up
2022-01-10 13:49:36 +01:00
KonradStaniec
0f18272315
Test vectors upt decoding/encoding ( #458 )
2022-01-07 10:38:36 +01:00
KonradStaniec
fcb0ff521c
Improve logging in uTP ( #457 )
...
* Improve logging
2022-01-07 10:38:19 +01:00
KonradStaniec
9c8e9d9f64
Handle selective acks ( #456 )
...
* Handle selective acks
2022-01-04 09:52:38 +01:00
KonradStaniec
664072fff7
Minor improvements from pr comments ( #455 )
2021-12-28 08:08:05 +01:00
Kim De Mey
42e257796f
Add discoveryv5 session metrics ( #454 )
2021-12-21 15:09:46 +01:00
Kim De Mey
8b7d41f596
Don't use exceptions for enr get call ( #453 )
...
The ENR code used to be solely exception based, and these
exceptions where a left-over of that. They are useless as later
calls use Result anyhow.
Additionally, they cause quite the performance loss because they
are used in the "common path" for the toTypedRecord call, e.g.
when reading the fields of ip6, tcp6 and udp6.
2021-12-21 15:09:32 +01:00
Kim De Mey
2c236f6495
Style fixes according to --styleCheck:usages ( #452 )
...
Currently only setting `--styleCheck:hint` as there are some
dependency fixes required and the compiler seems to trip over the
findnode MessageKind, findnode Message field and the findNode
proc. Also over protocol.Protocol usage.
2021-12-20 13:14:50 +01:00
KonradStaniec
0cfe7df817
Handle packets with selective acks ( #451 )
...
* Handle packets with selective acks
2021-12-15 13:35:17 +01:00
Etan Kissling
5655bd035c
Merge pull request #450 from etan-status/reject-whoareyou-len
...
reject WHOAREYOU packets with non-empty message
2021-12-14 16:22:25 +01:00
Ștefan Talpalaru
2088d7568d
CI: test with multiple Nim version ( #429 )
...
* CI: test with multiple Nim version
* clean up the testing tree a little
* replace "unittest" with "unittest2"
2021-12-11 19:12:55 +01:00
Etan Kissling
45387ad4d2
reject WHOAREYOU packets with non-empty message
...
This changes the `discv5` parser to reject malformed WHOAREYOU packets
that have a non-0 message length. The extra data used to be ignored.
The `message` part of WHOAREYOU packets is always empty.
See https://github.com/ethereum/devp2p/blob/master/discv5/discv5-wire.md
2021-12-11 15:55:14 +01:00
Etan Kissling
fb7ea69eb4
Merge pull request #449 from etan-status/encryptgcm-type
...
more specific type check in `encryptGCM`
2021-12-11 14:50:35 +01:00