mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-12-11 05:30:07 +00:00
9a30f2fbcc
And make the node fail gracefully if it's unable to bind. Before this commit: ----- Server is starting up Connection manager started Error connecting to outbound listen tcp 127.0.0.1:20332: bind: address already in use We have connected successfully to: 127.0.0.1:20334 panic: runtime error: invalid memory address or nil pointer dereference panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x6bbfa2] goroutine 12 [running]: github.com/CityOfZion/neo-go/pkg/connmgr.New.func1.1(0x0, 0x0) /home/rik/dev/neo-go/pkg/connmgr/connmgr.go:47 +0x22 panic(0x718980, 0xa22f70) /usr/lib64/go/1.12/src/runtime/panic.go:522 +0x1b5 github.com/CityOfZion/neo-go/pkg/connmgr.New.func1(0xc000013430, 0xc000013450, 0xc000013440, 0xc0005265f0, 0xf, 0x0) /home/rik/dev/neo-go/pkg/connmgr/connmgr.go:52 +0x15e created by github.com/CityOfZion/neo-go/pkg/connmgr.New /home/rik/dev/neo-go/pkg/connmgr/connmgr.go:38 +0xfe exit status 2 ----- After this commit: ----- listen tcp 127.0.0.1:20332: bind: address already in use ----- |
||
---|---|---|
.. | ||
config.go | ||
connmgr.go | ||
connmgr_test.go | ||
readme.md | ||
request.go |
Package - Connection Manager
Responsibility
- Manages the active, failed and pending connections for the node.
Features
-
Takes an Request, dials it and logs information based on the connectivity.
-
Retry failed connections.
-
Removable address source. The connection manager does not manage addresses, only connections.
Usage
The following methods are exposed from the Connection manager:
-
Connect(r *Request) : This takes a Request object and connects to it. It follow the same logic as NewRequest() however instead of getting the address from the datasource given upon initialisation, you directly feed the address you want to connect to.
-
Disconnect(addrport string) : Given an address:port, this will disconnect it, close the connection and remove it from the connected and pending list, if it was there.