starpc 0.13.1 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/e2e/e2e_test.go +2 -2
- package/echo/echo_srpc.pb.go +1 -1
- package/go.mod +10 -10
- package/go.sum +20 -20
- package/package.json +8 -8
- package/srpc/accept.go +5 -2
- package/srpc/msg-stream.go +5 -3
- package/srpc/muxed-conn.go +19 -7
- package/srpc/packet-rw.go +2 -3
- package/srpc/server-http.go +3 -4
- package/srpc/stream.go +1 -1
- package/srpc/websocket.go +10 -3
package/e2e/e2e_test.go
CHANGED
|
@@ -30,7 +30,7 @@ func RunE2E(t *testing.T, cb func(client echo.SRPCEchoerClient) error) {
|
|
|
30
30
|
clientPipe, serverPipe := net.Pipe()
|
|
31
31
|
|
|
32
32
|
// outbound=true
|
|
33
|
-
clientMp, err := srpc.NewMuxedConn(clientPipe, true)
|
|
33
|
+
clientMp, err := srpc.NewMuxedConn(clientPipe, true, nil)
|
|
34
34
|
if err != nil {
|
|
35
35
|
t.Fatal(err.Error())
|
|
36
36
|
}
|
|
@@ -38,7 +38,7 @@ func RunE2E(t *testing.T, cb func(client echo.SRPCEchoerClient) error) {
|
|
|
38
38
|
|
|
39
39
|
ctx := context.Background()
|
|
40
40
|
// outbound=false
|
|
41
|
-
serverMp, err := srpc.NewMuxedConn(serverPipe, false)
|
|
41
|
+
serverMp, err := srpc.NewMuxedConn(serverPipe, false, nil)
|
|
42
42
|
if err != nil {
|
|
43
43
|
t.Fatal(err.Error())
|
|
44
44
|
}
|
package/echo/echo_srpc.pb.go
CHANGED
package/go.mod
CHANGED
|
@@ -9,7 +9,7 @@ require (
|
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
require (
|
|
12
|
-
github.com/libp2p/go-libp2p v0.23.3-0.
|
|
12
|
+
github.com/libp2p/go-libp2p v0.23.3-0.20221109121032-c334288f8fe4
|
|
13
13
|
github.com/libp2p/go-yamux/v4 v4.0.1-0.20220919134236-1c09f2ab3ec1
|
|
14
14
|
github.com/sirupsen/logrus v1.9.0
|
|
15
15
|
)
|
|
@@ -26,15 +26,15 @@ require (
|
|
|
26
26
|
github.com/minio/sha256-simd v1.0.0 // indirect
|
|
27
27
|
github.com/mr-tron/base58 v1.2.0 // indirect
|
|
28
28
|
github.com/multiformats/go-base32 v0.1.0 // indirect
|
|
29
|
-
github.com/multiformats/go-base36 v0.1.0 // indirect
|
|
29
|
+
github.com/multiformats/go-base36 v0.1.1-0.20220823151017-f5af2eed4d9c // indirect
|
|
30
30
|
github.com/multiformats/go-multiaddr v0.7.0 // indirect
|
|
31
|
-
github.com/multiformats/go-multibase v0.1.
|
|
32
|
-
github.com/multiformats/go-multicodec v0.
|
|
33
|
-
github.com/multiformats/go-multihash v0.2.
|
|
34
|
-
github.com/multiformats/go-varint v0.0.
|
|
31
|
+
github.com/multiformats/go-multibase v0.1.2-0.20220823162309-7160a7347ed1 // indirect
|
|
32
|
+
github.com/multiformats/go-multicodec v0.7.1-0.20221017174837-a2baec7ca709 // indirect
|
|
33
|
+
github.com/multiformats/go-multihash v0.2.2-0.20221030163302-608669da49b6 // indirect
|
|
34
|
+
github.com/multiformats/go-varint v0.0.7-0.20220823162201-881f9a52d5d2 // indirect
|
|
35
35
|
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
|
|
36
|
-
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
|
37
|
-
golang.org/x/crypto v0.
|
|
38
|
-
golang.org/x/sys v0.
|
|
39
|
-
lukechampine.com/blake3 v1.1.
|
|
36
|
+
github.com/spaolacci/murmur3 v1.1.1-0.20190317074736-539464a789e9 // indirect
|
|
37
|
+
golang.org/x/crypto v0.2.1-0.20221109165004-21d60a152191 // indirect
|
|
38
|
+
golang.org/x/sys v0.2.0 // indirect
|
|
39
|
+
lukechampine.com/blake3 v1.1.8-0.20220321170924-7afca5966e5e // indirect
|
|
40
40
|
)
|
package/go.sum
CHANGED
|
@@ -50,8 +50,8 @@ github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
|
|
50
50
|
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
|
51
51
|
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
|
|
52
52
|
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
|
|
53
|
-
github.com/libp2p/go-libp2p v0.23.3-0.
|
|
54
|
-
github.com/libp2p/go-libp2p v0.23.3-0.
|
|
53
|
+
github.com/libp2p/go-libp2p v0.23.3-0.20221109121032-c334288f8fe4 h1:Qo2C6xKnszNiB8nJ8M9E/wBakSktWccnm+ro+EGluX4=
|
|
54
|
+
github.com/libp2p/go-libp2p v0.23.3-0.20221109121032-c334288f8fe4/go.mod h1:9lqLgktzI5Gn2bplyrZvFSuDirYRBMU+Tu/FYBIjvek=
|
|
55
55
|
github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA=
|
|
56
56
|
github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo=
|
|
57
57
|
github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc=
|
|
@@ -71,18 +71,18 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
|
|
71
71
|
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
|
72
72
|
github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE=
|
|
73
73
|
github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI=
|
|
74
|
-
github.com/multiformats/go-base36 v0.1.0 h1:
|
|
75
|
-
github.com/multiformats/go-base36 v0.1.0/go.mod h1:
|
|
74
|
+
github.com/multiformats/go-base36 v0.1.1-0.20220823151017-f5af2eed4d9c h1:3eLctj5+2JpWf0E8PICebevkyD0KcZUhye8ggScrnEQ=
|
|
75
|
+
github.com/multiformats/go-base36 v0.1.1-0.20220823151017-f5af2eed4d9c/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4=
|
|
76
76
|
github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc=
|
|
77
77
|
github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs=
|
|
78
|
-
github.com/multiformats/go-multibase v0.1.
|
|
79
|
-
github.com/multiformats/go-multibase v0.1.
|
|
80
|
-
github.com/multiformats/go-multicodec v0.
|
|
81
|
-
github.com/multiformats/go-multicodec v0.
|
|
82
|
-
github.com/multiformats/go-multihash v0.2.
|
|
83
|
-
github.com/multiformats/go-multihash v0.2.
|
|
84
|
-
github.com/multiformats/go-varint v0.0.
|
|
85
|
-
github.com/multiformats/go-varint v0.0.
|
|
78
|
+
github.com/multiformats/go-multibase v0.1.2-0.20220823162309-7160a7347ed1 h1:fts9VGSGzcENj3XnQ3iz9LGMAJAqT46fUGyaUDGFuxQ=
|
|
79
|
+
github.com/multiformats/go-multibase v0.1.2-0.20220823162309-7160a7347ed1/go.mod h1:ReOVfKN5TNx1Z6d9Ba4GdcbPfPgAT8gC7lSG0ZJjEl4=
|
|
80
|
+
github.com/multiformats/go-multicodec v0.7.1-0.20221017174837-a2baec7ca709 h1:XwgbSBFN6TU/aBJk0BLucpFL6I9zL9GMJp+WflbHkos=
|
|
81
|
+
github.com/multiformats/go-multicodec v0.7.1-0.20221017174837-a2baec7ca709/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw=
|
|
82
|
+
github.com/multiformats/go-multihash v0.2.2-0.20221030163302-608669da49b6 h1:qLF997Rz0X1WvdcZ2r5CUkLZ2rvdiXwG1JRSrJZEAuE=
|
|
83
|
+
github.com/multiformats/go-multihash v0.2.2-0.20221030163302-608669da49b6/go.mod h1:kaHxr8TfO1cxIR/tYxgZ7e59HraJq8arEQQR8E/YNvI=
|
|
84
|
+
github.com/multiformats/go-varint v0.0.7-0.20220823162201-881f9a52d5d2 h1:zsa4CR/QUzyyNdyaotjJrqFzKbzCsWzhQWcUSamGWr8=
|
|
85
|
+
github.com/multiformats/go-varint v0.0.7-0.20220823162201-881f9a52d5d2/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
|
|
86
86
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|
87
87
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
88
88
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
|
@@ -91,8 +91,8 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0
|
|
|
91
91
|
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
|
92
92
|
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU=
|
|
93
93
|
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc=
|
|
94
|
-
github.com/spaolacci/murmur3 v1.1.0 h1:
|
|
95
|
-
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
|
94
|
+
github.com/spaolacci/murmur3 v1.1.1-0.20190317074736-539464a789e9 h1:7/iCYp2ii4GgbLhsT4uA8+vNHYYlSY5I5CS6/8e57hE=
|
|
95
|
+
github.com/spaolacci/murmur3 v1.1.1-0.20190317074736-539464a789e9/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
|
96
96
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
97
97
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
|
98
98
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
|
@@ -107,8 +107,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
|
|
|
107
107
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
108
108
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
109
109
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
110
|
-
golang.org/x/crypto v0.
|
|
111
|
-
golang.org/x/crypto v0.
|
|
110
|
+
golang.org/x/crypto v0.2.1-0.20221109165004-21d60a152191 h1:mPxyLskqfKMEHYEIa1kKmcNC8ZSiJLYbMaXyUpW+ooY=
|
|
111
|
+
golang.org/x/crypto v0.2.1-0.20221109165004-21d60a152191/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
|
112
112
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
113
113
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
114
114
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
@@ -124,8 +124,8 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w
|
|
|
124
124
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
125
125
|
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
126
126
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
127
|
-
golang.org/x/sys v0.
|
|
128
|
-
golang.org/x/sys v0.
|
|
127
|
+
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
|
|
128
|
+
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
129
129
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
130
130
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|
131
131
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
@@ -148,7 +148,7 @@ gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
|
|
148
148
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
149
149
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
150
150
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|
151
|
-
lukechampine.com/blake3 v1.1.
|
|
152
|
-
lukechampine.com/blake3 v1.1.
|
|
151
|
+
lukechampine.com/blake3 v1.1.8-0.20220321170924-7afca5966e5e h1:YeQnmA0g9M+7uVBjUXNUpVQRfWrvTu4I5u+DjFudflw=
|
|
152
|
+
lukechampine.com/blake3 v1.1.8-0.20220321170924-7afca5966e5e/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
|
|
153
153
|
nhooyr.io/websocket v1.8.8-0.20210410000328-8dee580a7f74 h1:V2XOYY4rGPHLTGQD4TiOMOfVwNd0zAuEPofzzEqiFWk=
|
|
154
154
|
nhooyr.io/websocket v1.8.8-0.20210410000328-8dee580a7f74/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "starpc",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"description": "Streaming protobuf RPC service protocol over any two-way channel.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"@typescript-eslint/parser": "^5.42.0",
|
|
64
64
|
"bufferutil": "^4.0.7",
|
|
65
65
|
"depcheck": "^1.4.3",
|
|
66
|
-
"esbuild": "^0.15.
|
|
67
|
-
"eslint": "^8.
|
|
66
|
+
"esbuild": "^0.15.13",
|
|
67
|
+
"eslint": "^8.27.0",
|
|
68
68
|
"eslint-config-prettier": "^8.5.0",
|
|
69
69
|
"prettier": "^2.7.1",
|
|
70
70
|
"rimraf": "^3.0.2",
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
"utf-8-validate": "^5.0.10"
|
|
74
74
|
},
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@chainsafe/libp2p-yamux": "^3.0.
|
|
77
|
-
"@libp2p/interface-connection": "^3.0.
|
|
78
|
-
"@libp2p/interface-stream-muxer": "^3.0.
|
|
76
|
+
"@chainsafe/libp2p-yamux": "^3.0.3",
|
|
77
|
+
"@libp2p/interface-connection": "^3.0.3",
|
|
78
|
+
"@libp2p/interface-stream-muxer": "^3.0.1",
|
|
79
79
|
"event-iterator": "^2.0.0",
|
|
80
80
|
"is-promise": "^4.0.0",
|
|
81
81
|
"isomorphic-ws": "^5.0.0",
|
|
@@ -85,10 +85,10 @@
|
|
|
85
85
|
"it-pushable": "^3.1.0",
|
|
86
86
|
"it-stream-types": "^1.0.4",
|
|
87
87
|
"it-ws": "^5.0.3",
|
|
88
|
-
"long": "^5.2.
|
|
88
|
+
"long": "^5.2.1",
|
|
89
89
|
"patch-package": "^6.5.0",
|
|
90
90
|
"protobufjs": "^7.1.2",
|
|
91
91
|
"uint8arraylist": "^2.3.3",
|
|
92
|
-
"ws": "^8.
|
|
92
|
+
"ws": "^8.11.0"
|
|
93
93
|
}
|
|
94
94
|
}
|
package/srpc/accept.go
CHANGED
|
@@ -3,19 +3,22 @@ package srpc
|
|
|
3
3
|
import (
|
|
4
4
|
"context"
|
|
5
5
|
"net"
|
|
6
|
+
|
|
7
|
+
"github.com/libp2p/go-yamux/v4"
|
|
6
8
|
)
|
|
7
9
|
|
|
8
10
|
// AcceptMuxedListener accepts incoming connections from a net.Listener.
|
|
9
11
|
//
|
|
10
12
|
// Uses the default yamux muxer.
|
|
11
|
-
|
|
13
|
+
// If yamux conf is nil, uses the defaults.
|
|
14
|
+
func AcceptMuxedListener(ctx context.Context, lis net.Listener, srv *Server, yamuxConf *yamux.Config) error {
|
|
12
15
|
for {
|
|
13
16
|
nc, err := lis.Accept()
|
|
14
17
|
if err != nil {
|
|
15
18
|
return err
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
mc, err := NewMuxedConn(nc, false)
|
|
21
|
+
mc, err := NewMuxedConn(nc, false, yamuxConf)
|
|
19
22
|
if err != nil {
|
|
20
23
|
_ = nc.Close()
|
|
21
24
|
continue
|
package/srpc/msg-stream.go
CHANGED
|
@@ -91,13 +91,15 @@ func (r *MsgStream) Close() error {
|
|
|
91
91
|
return nil
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
if err := r.closeSend(); err != nil {
|
|
95
|
+
return err
|
|
96
|
+
}
|
|
97
|
+
|
|
96
98
|
if r.closeCb != nil {
|
|
97
99
|
r.closeCb()
|
|
98
100
|
}
|
|
99
101
|
|
|
100
|
-
return
|
|
102
|
+
return nil
|
|
101
103
|
}
|
|
102
104
|
|
|
103
105
|
// closeSend writes the CloseSend packet.
|
package/srpc/muxed-conn.go
CHANGED
|
@@ -15,13 +15,16 @@ func NewYamuxConfig() *yamux.Config {
|
|
|
15
15
|
// Configuration options from go-libp2p-yamux:
|
|
16
16
|
config := *ymuxer.DefaultTransport.Config()
|
|
17
17
|
config.AcceptBacklog = 512
|
|
18
|
-
config.MaxMessageSize = 2e6
|
|
19
18
|
return &config
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
// NewMuxedConn constructs a new MuxedConn from a net.Conn.
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
//
|
|
23
|
+
// If yamuxConf is nil, uses defaults.
|
|
24
|
+
func NewMuxedConn(conn net.Conn, outbound bool, yamuxConf *yamux.Config) (network.MuxedConn, error) {
|
|
25
|
+
if yamuxConf == nil {
|
|
26
|
+
yamuxConf = NewYamuxConfig()
|
|
27
|
+
}
|
|
25
28
|
|
|
26
29
|
var sess *yamux.Session
|
|
27
30
|
var err error
|
|
@@ -38,13 +41,22 @@ func NewMuxedConn(conn net.Conn, outbound bool) (network.MuxedConn, error) {
|
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
// NewMuxedConnWithRwc builds a new MuxedConn with a io.ReadWriteCloser.
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
//
|
|
45
|
+
// If yamuxConf is nil, uses defaults.
|
|
46
|
+
func NewMuxedConnWithRwc(
|
|
47
|
+
ctx context.Context,
|
|
48
|
+
rwc io.ReadWriteCloser,
|
|
49
|
+
outbound bool,
|
|
50
|
+
yamuxConf *yamux.Config,
|
|
51
|
+
) (network.MuxedConn, error) {
|
|
52
|
+
return NewMuxedConn(NewRwcConn(ctx, rwc, nil, nil, 10), outbound, yamuxConf)
|
|
43
53
|
}
|
|
44
54
|
|
|
45
55
|
// NewClientWithConn constructs the muxer and the client.
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
//
|
|
57
|
+
// if yamuxConf is nil, uses defaults.
|
|
58
|
+
func NewClientWithConn(conn net.Conn, outbound bool, yamuxConf *yamux.Config) (Client, error) {
|
|
59
|
+
mconn, err := NewMuxedConn(conn, outbound, yamuxConf)
|
|
48
60
|
if err != nil {
|
|
49
61
|
return nil, err
|
|
50
62
|
}
|
package/srpc/packet-rw.go
CHANGED
|
@@ -41,8 +41,7 @@ func (r *PacketReaderWriter) WritePacket(p *Packet) error {
|
|
|
41
41
|
if err != nil {
|
|
42
42
|
return err
|
|
43
43
|
}
|
|
44
|
-
var n int
|
|
45
|
-
written := 0
|
|
44
|
+
var written, n int
|
|
46
45
|
for written < len(data) {
|
|
47
46
|
n, err = r.rw.Write(data)
|
|
48
47
|
if err != nil {
|
|
@@ -50,7 +49,7 @@ func (r *PacketReaderWriter) WritePacket(p *Packet) error {
|
|
|
50
49
|
}
|
|
51
50
|
written += n
|
|
52
51
|
}
|
|
53
|
-
return
|
|
52
|
+
return nil
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
// ReadPump executes the read pump in a goroutine.
|
package/srpc/server-http.go
CHANGED
|
@@ -32,16 +32,15 @@ func (s *HTTPServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
|
32
32
|
|
|
33
33
|
c, err := websocket.Accept(w, r, &websocket.AcceptOptions{})
|
|
34
34
|
if err != nil {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
w.WriteHeader(500)
|
|
36
|
+
w.Write([]byte(err.Error() + "\n"))
|
|
37
37
|
return
|
|
38
38
|
}
|
|
39
39
|
defer c.Close(websocket.StatusInternalError, "closed")
|
|
40
40
|
|
|
41
41
|
ctx := r.Context()
|
|
42
|
-
wsConn, err := NewWebSocketConn(ctx, c, true)
|
|
42
|
+
wsConn, err := NewWebSocketConn(ctx, c, true, nil)
|
|
43
43
|
if err != nil {
|
|
44
|
-
// TODO: handle / log error?
|
|
45
44
|
c.Close(websocket.StatusInternalError, err.Error())
|
|
46
45
|
return
|
|
47
46
|
}
|
package/srpc/stream.go
CHANGED
package/srpc/websocket.go
CHANGED
|
@@ -5,6 +5,7 @@ import (
|
|
|
5
5
|
"io"
|
|
6
6
|
|
|
7
7
|
"github.com/libp2p/go-libp2p/core/network"
|
|
8
|
+
"github.com/libp2p/go-yamux/v4"
|
|
8
9
|
"nhooyr.io/websocket"
|
|
9
10
|
)
|
|
10
11
|
|
|
@@ -17,9 +18,11 @@ type WebSocketConn struct {
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
// NewWebSocketConn constructs a new WebSocket connection.
|
|
20
|
-
|
|
21
|
+
//
|
|
22
|
+
// if yamuxConf is unset, uses the defaults.
|
|
23
|
+
func NewWebSocketConn(ctx context.Context, conn *websocket.Conn, isServer bool, yamuxConf *yamux.Config) (*WebSocketConn, error) {
|
|
21
24
|
nc := websocket.NetConn(ctx, conn, websocket.MessageBinary)
|
|
22
|
-
muxedConn, err := NewMuxedConn(nc, !isServer)
|
|
25
|
+
muxedConn, err := NewMuxedConn(nc, !isServer, yamuxConf)
|
|
23
26
|
if err != nil {
|
|
24
27
|
return nil, err
|
|
25
28
|
}
|
|
@@ -38,7 +41,11 @@ func (w *WebSocketConn) GetOpenStreamFunc() OpenStreamFunc {
|
|
|
38
41
|
|
|
39
42
|
// AcceptStream accepts an incoming stream.
|
|
40
43
|
func (w *WebSocketConn) AcceptStream() (io.ReadWriteCloser, error) {
|
|
41
|
-
|
|
44
|
+
strm, err := w.mconn.AcceptStream()
|
|
45
|
+
if err != nil {
|
|
46
|
+
return nil, err
|
|
47
|
+
}
|
|
48
|
+
return strm, nil
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
// OpenStream tries to open a stream with the remote.
|