mirror of
https://github.com/libp2p/go-libp2p.git
synced 2025-10-27 02:01:39 +08:00
* Don't limit message sizes in the websocket reader * Remove fmt.println * Update p2p/transport/websocket/listener.go Co-authored-by: Marten Seemann <martenseemann@gmail.com> * Update p2p/transport/websocket/listener.go Co-authored-by: Marten Seemann <martenseemann@gmail.com> --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package websocket_test
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/libp2p/go-libp2p"
|
|
"github.com/libp2p/go-libp2p/core/network"
|
|
"github.com/libp2p/go-libp2p/core/peer"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestReadLimit(t *testing.T) {
|
|
h1, err := libp2p.New(libp2p.ListenAddrStrings("/ip4/127.0.0.1/tcp/0/ws"))
|
|
require.NoError(t, err)
|
|
defer h1.Close()
|
|
|
|
ctx := context.Background()
|
|
h2, err := libp2p.New(libp2p.NoListenAddrs)
|
|
require.NoError(t, err)
|
|
defer h2.Close()
|
|
|
|
err = h2.Connect(ctx, peer.AddrInfo{ID: h1.ID(), Addrs: h1.Addrs()})
|
|
require.NoError(t, err)
|
|
|
|
buf := make([]byte, 256<<10)
|
|
buf2 := make([]byte, 256<<10)
|
|
copyBuf := make([]byte, 8<<10)
|
|
|
|
errCh := make(chan error, 1)
|
|
// TODO perf would be perfect here, but not yet merged.
|
|
h1.SetStreamHandler("/big-blocks", func(s network.Stream) {
|
|
defer s.Close()
|
|
_, err := io.CopyBuffer(io.Discard, s, copyBuf)
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
_, err = s.Write(buf)
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
errCh <- nil
|
|
})
|
|
|
|
allocs := testing.AllocsPerRun(100, func() {
|
|
s, err := h2.NewStream(ctx, h1.ID(), "/big-blocks")
|
|
require.NoError(t, err)
|
|
defer s.Close()
|
|
_, err = s.Write(buf2)
|
|
require.NoError(t, err)
|
|
require.NoError(t, s.CloseWrite())
|
|
|
|
_, err = io.ReadFull(s, buf2)
|
|
require.NoError(t, err)
|
|
|
|
_, err = s.Read([]byte{0})
|
|
require.ErrorIs(t, err, io.EOF)
|
|
require.NoError(t, <-errCh)
|
|
})
|
|
|
|
// Make sure we aren't doing some crazy allocs when transferring big blocks
|
|
require.Less(t, allocs, 8*1024.0)
|
|
}
|