From 2d168888c1f26680e809a7f07b7ed0a84c28f632 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Tue, 20 Sep 2022 16:59:15 -0700 Subject: [PATCH] websocket: fix nil pointer in tlsClientConf --- p2p/transport/websocket/websocket.go | 5 +++-- p2p/transport/websocket/websocket_test.go | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/p2p/transport/websocket/websocket.go b/p2p/transport/websocket/websocket.go index 04af9b8c8e..2e9fc0b032 100644 --- a/p2p/transport/websocket/websocket.go +++ b/p2p/transport/websocket/websocket.go @@ -95,8 +95,9 @@ func New(u transport.Upgrader, rcmgr network.ResourceManager, opts ...Option) (* rcmgr = network.NullResourceManager } t := &WebsocketTransport{ - upgrader: u, - rcmgr: rcmgr, + upgrader: u, + rcmgr: rcmgr, + tlsClientConf: &tls.Config{}, } for _, opt := range opts { if err := opt(t); err != nil { diff --git a/p2p/transport/websocket/websocket_test.go b/p2p/transport/websocket/websocket_test.go index 9ac71a7796..1961e9cec9 100644 --- a/p2p/transport/websocket/websocket_test.go +++ b/p2p/transport/websocket/websocket_test.go @@ -165,10 +165,7 @@ func testWSSServer(t *testing.T, listenAddr ma.Multiaddr) (ma.Multiaddr, peer.ID t.Fatal(err) } - // l, err := tpt.Listen(ma.StringCast("/ip4/127.0.0.1/tcp/0/wss")) - // l, err := tpt.Listen(ma.StringCast("/ip4/127.0.0.1/tcp/0/tls/ws")) l, err := tpt.Listen(listenAddr) - fmt.Println("here", listenAddr) require.NoError(t, err) t.Cleanup(func() { l.Close() @@ -245,6 +242,24 @@ func TestDialWss(t *testing.T) { require.NoError(t, err) } +func TestDialWssNoClientCert(t *testing.T) { + serverMA, rid, _ := testWSSServer(t, ma.StringCast("/ip4/127.0.0.1/tcp/0/tls/sni/example.com/ws")) + require.Contains(t, serverMA.String(), "tls") + + _, u := newSecureUpgrader(t) + tpt, err := New(u, network.NullResourceManager) + require.NoError(t, err) + + masToDial, err := tpt.Resolve(context.Background(), serverMA) + require.NoError(t, err) + + _, err = tpt.Dial(context.Background(), masToDial[0], rid) + require.Error(t, err) + + // The server doesn't have a signed certificate + require.Contains(t, err.Error(), "x509") +} + func TestWebsocketTransport(t *testing.T) { t.Skip("This test is failing, see https://github.com/libp2p/go-ws-transport/issues/99") _, ua := newUpgrader(t)