mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-01 09:32:08 +00:00
derp, wgengine/magicsock: support more than just packets from Client.Recv
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
88f1cc0c98
commit
379a3125fd
@@ -167,16 +167,16 @@ func (c *Client) Send(dstKey key.Public, b []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Client) Recv(b []byte) (int, error) {
|
||||
func (c *Client) Recv(b []byte) (derp.ReceivedMessage, error) {
|
||||
client, err := c.connect(context.TODO(), "derphttp.Client.Recv")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
return nil, err
|
||||
}
|
||||
n, err := client.Recv(b)
|
||||
m, err := client.Recv(b)
|
||||
if err != nil {
|
||||
c.close()
|
||||
}
|
||||
return n, err
|
||||
return m, err
|
||||
}
|
||||
|
||||
// Close closes the client. It will not automatically reconnect after
|
||||
|
||||
@@ -94,13 +94,18 @@ func TestSendRecv(t *testing.T) {
|
||||
default:
|
||||
}
|
||||
b := make([]byte, 1<<16)
|
||||
n, err := c.Recv(b)
|
||||
m, err := c.Recv(b)
|
||||
if err != nil {
|
||||
t.Logf("client%d: %v", i, err)
|
||||
break
|
||||
}
|
||||
b = b[:n]
|
||||
recvChs[i] <- b
|
||||
switch m := m.(type) {
|
||||
default:
|
||||
t.Errorf("unexpected message type %T", m)
|
||||
continue
|
||||
case derp.ReceivedPacket:
|
||||
recvChs[i] <- []byte(m)
|
||||
}
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user