1
1
package ws
2
2
3
3
import (
4
+ "cmp"
4
5
"context"
5
6
"encoding/base64"
6
7
"encoding/json"
29
30
30
31
type WSConn struct {
31
32
rawConn atomic.Pointer [websocket.Conn ]
32
- server * disco.Peermap
33
+ server * disco.Server
33
34
connectedServer string
34
35
peerID disco.PeerID
35
36
metadata url.Values
@@ -197,7 +198,7 @@ func (c *WSConn) Unregister(ctr disco.Controller) {
197
198
}
198
199
199
200
func (c * WSConn ) dial (ctx context.Context , server string ) error {
200
- networkSecret , err := c . server .SecretStore ( ).NetworkSecret ()
201
+ networkSecret , err := cmp . Or [disco .SecretStore ]( c . server . Secret , & disco. NetworkSecret {} ).NetworkSecret ()
201
202
if err != nil {
202
203
return fmt .Errorf ("get network secret failed: %w" , err )
203
204
}
@@ -207,7 +208,7 @@ func (c *WSConn) dial(ctx context.Context, server string) error {
207
208
handshake .Set ("X-Nonce" , disco .NewNonce ())
208
209
handshake .Set ("X-Metadata" , c .metadata .Encode ())
209
210
if server == "" {
210
- server = c .server .String ()
211
+ server = c .server .URL
211
212
}
212
213
peermap , err := url .Parse (server )
213
214
if err != nil {
@@ -474,7 +475,7 @@ func (c *WSConn) writeWS(messageType int, data []byte) error {
474
475
475
476
func (c * WSConn ) updateNetworkSecret (secret disco.NetworkSecret ) {
476
477
for i := 0 ; i < 5 ; i ++ {
477
- if err := c .server .SecretStore () .UpdateNetworkSecret (secret ); err != nil {
478
+ if err := c .server .Secret .UpdateNetworkSecret (secret ); err != nil {
478
479
slog .Error ("[WS] NetworkSecretUpdate" , "err" , err )
479
480
time .Sleep (time .Second )
480
481
continue
@@ -484,7 +485,7 @@ func (c *WSConn) updateNetworkSecret(secret disco.NetworkSecret) {
484
485
slog .Error ("[WS] NetworkSecretUpdate give up" , "secret" , secret )
485
486
}
486
487
487
- func DialPeermap (ctx context.Context , server * disco.Peermap , peerID disco.PeerID , metadata url.Values ) (* WSConn , error ) {
488
+ func DialPeermap (ctx context.Context , server * disco.Server , peerID disco.PeerID , metadata url.Values ) (* WSConn , error ) {
488
489
wsConn := & WSConn {
489
490
server : server ,
490
491
peerID : peerID ,
0 commit comments