ssh/tailssh, ipnlocal, controlclient: fetch next SSHAction from network

Updates #3802

Change-Id: I08e98805ab86d6bbabb6c365ed4526f54742fd8e
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2022-03-10 10:28:42 -08:00
committed by Brad Fitzpatrick
parent 6b11004a2a
commit efc48b0578
7 changed files with 108 additions and 16 deletions

View File

@@ -3241,3 +3241,15 @@ func (b *LocalBackend) magicConn() (*magicsock.Conn, error) {
}
return mc, nil
}
// DoNoiseRequest sends a request to URL over the the control plane
// Noise connection.
func (b *LocalBackend) DoNoiseRequest(req *http.Request) (*http.Response, error) {
b.mu.Lock()
cc := b.cc
b.mu.Unlock()
if cc == nil {
return nil, errors.New("no client")
}
return cc.DoNoiseRequest(req)
}

View File

@@ -6,6 +6,7 @@ package ipnlocal
import (
"context"
"net/http"
"sync"
"testing"
"time"
@@ -266,6 +267,10 @@ func (*mockControl) SetDNS(context.Context, *tailcfg.SetDNSRequest) error {
panic("unexpected SetDNS call")
}
func (*mockControl) DoNoiseRequest(*http.Request) (*http.Response, error) {
panic("unexpected DoNoiseRequest call")
}
// A very precise test of the sequence of function calls generated by
// ipnlocal.Local into its controlclient instance, and the events it
// produces upstream into the UI.