mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 13:05:46 +00:00
ipn/ipnlocal: make FileTargets check IPN state first
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
b9f8dc7867
commit
b7a497a30b
@ -2425,13 +2425,13 @@ func (b *LocalBackend) FileTargets() ([]*apitype.FileTarget, error) {
|
|||||||
|
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
defer b.mu.Unlock()
|
defer b.mu.Unlock()
|
||||||
if !b.capFileSharing {
|
|
||||||
return nil, errors.New("file sharing not enabled by Tailscale admin")
|
|
||||||
}
|
|
||||||
nm := b.netMap
|
nm := b.netMap
|
||||||
if b.state != ipn.Running || nm == nil {
|
if b.state != ipn.Running || nm == nil {
|
||||||
return nil, errors.New("not connected")
|
return nil, errors.New("not connected")
|
||||||
}
|
}
|
||||||
|
if !b.capFileSharing {
|
||||||
|
return nil, errors.New("file sharing not enabled by Tailscale admin")
|
||||||
|
}
|
||||||
for _, p := range nm.Peers {
|
for _, p := range nm.Peers {
|
||||||
if p.User != nm.User {
|
if p.User != nm.User {
|
||||||
continue
|
continue
|
||||||
|
@ -504,3 +504,33 @@ func TestLazyMachineKeyGeneration(t *testing.T) {
|
|||||||
// hit panicOnUseTransport).
|
// hit panicOnUseTransport).
|
||||||
time.Sleep(500 * time.Millisecond)
|
time.Sleep(500 * time.Millisecond)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFileTargets(t *testing.T) {
|
||||||
|
b := new(LocalBackend)
|
||||||
|
_, err := b.FileTargets()
|
||||||
|
if got, want := fmt.Sprint(err), "not connected"; got != want {
|
||||||
|
t.Errorf("before connect: got %q; want %q", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
b.netMap = new(netmap.NetworkMap)
|
||||||
|
_, err = b.FileTargets()
|
||||||
|
if got, want := fmt.Sprint(err), "not connected"; got != want {
|
||||||
|
t.Errorf("non-running netmap: got %q; want %q", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
b.state = ipn.Running
|
||||||
|
_, err = b.FileTargets()
|
||||||
|
if got, want := fmt.Sprint(err), "file sharing not enabled by Tailscale admin"; got != want {
|
||||||
|
t.Errorf("without cap: got %q; want %q", got, want)
|
||||||
|
}
|
||||||
|
|
||||||
|
b.capFileSharing = true
|
||||||
|
got, err := b.FileTargets()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if len(got) != 0 {
|
||||||
|
t.Fatalf("unexpected %d peers", len(got))
|
||||||
|
}
|
||||||
|
// (other cases handled by TestPeerAPIBase above)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user