mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-20 13:54:36 +01:00
connectd: give user a hint when wrong key is used.
When the wrong key is used, the remote end simply hangs up. We used to get a random errno, which tends to be "Operation now in progress." Now it's defined to be 0, detect and provide a better error. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
cd8446f081
commit
09b33015c4
2 changed files with 10 additions and 2 deletions
|
@ -20,6 +20,7 @@
|
|||
#include <ccan/list/list.h>
|
||||
#include <ccan/mem/mem.h>
|
||||
#include <ccan/noerr/noerr.h>
|
||||
#include <ccan/str/str.h>
|
||||
#include <ccan/take/take.h>
|
||||
#include <ccan/tal/str/str.h>
|
||||
#include <common/bech32.h>
|
||||
|
@ -566,11 +567,18 @@ static void PRINTF_FMT(5,6)
|
|||
static void destroy_io_conn(struct io_conn *conn, struct connecting *connect)
|
||||
{
|
||||
/*~ tal_append_fmt appends to a tal string. It's terribly convenient */
|
||||
const char *errstr = strerror(errno);
|
||||
/* errno 0 means they hung up on us. */
|
||||
if (errno == 0) {
|
||||
errstr = "peer closed connection";
|
||||
if (streq(connect->connstate, "Cryptographic handshake"))
|
||||
errstr = "peer closed connection (wrong key?)";
|
||||
}
|
||||
tal_append_fmt(&connect->errors,
|
||||
"%s: %s: %s. ",
|
||||
type_to_string(tmpctx, struct wireaddr_internal,
|
||||
&connect->addrs[connect->addrnum]),
|
||||
connect->connstate, strerror(errno));
|
||||
connect->connstate, errstr);
|
||||
connect->addrnum++;
|
||||
try_connect_one_addr(connect);
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ def test_connect(node_factory):
|
|||
l1.rpc.connect('032cf15d1ad9c4a08d26eab1918f732d8ef8fdc6abb9640bf3db174372c491304e', 'localhost', 1)
|
||||
|
||||
# Should get reasonable error if wrong key for peer.
|
||||
with pytest.raises(RpcError, match=r'Cryptographic handshake: '):
|
||||
with pytest.raises(RpcError, match=r'Cryptographic handshake: peer closed connection \(wrong key\?\)'):
|
||||
l1.rpc.connect('032cf15d1ad9c4a08d26eab1918f732d8ef8fdc6abb9640bf3db174372c491304e', 'localhost', l2.port)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue