c64811a5f3
This commit fixes a lingering issue within lnd, which can cause a server to freeze up, and not handle any incoming connections properly, or cause clients to freeze and not return in a timely manner from a failed connection attempt. To avoid this, each time we need to read from the socket during the initial brontide handshake, we add a 15 second read deadline. If we don’t successfully read from the buffer during that time frame, then the Read method will return a timeout error. With this in place, we ensure that the main listener goroutine will never be blocked waiting on a remote party to write ActOne. |
||
---|---|---|
.. | ||
conn.go | ||
listener.go | ||
noise_test.go | ||
noise.go | ||
README.md |
brontide
The brontide package implements a secure crypto messaging protocol based off of the Noise Protocol Framework. The package exposes the raw state machine that handles the handshake and subsequent message encryption/decryption scheme. Additionally, the package exposes a net.Conn and a net.Listener interface implementation which allows the encrypted transport to be seamlessly integrated into a codebase.
The secure messaging scheme implemented within this package is described in detail in BOLT #8 of the Lightning Network specifications.
This package has intentionally been designed so it can be used as a standalone package for any projects needing secure encrypted+authenticated communications between network enabled programs.
Installation and Updating
$ go get -u github.com/lightningnetwork/lnd/brontide