This commit is contained in:
Mike O'Driscoll 2025-04-02 13:29:41 -04:00
parent 16d67ca9f9
commit 48a12a52e5
No known key found for this signature in database
3 changed files with 14 additions and 3 deletions

View File

@ -510,7 +510,9 @@ func rateLimitedListenAndServeTLS(srv *http.Server, lc *net.ListenConfig) error
return err return err
} }
rln := newRateLimitedListener(ln, rate.Limit(*acceptConnLimit), *acceptConnBurst) rln := newRateLimitedListener(ln, rate.Limit(*acceptConnLimit), *acceptConnBurst)
expvar.Publish("tls_listener", rln.ExpVar()) if expvar.Get("tls_listener") == nil {
expvar.Publish("tls_listener", rln.ExpVar())
}
defer rln.Close() defer rln.Close()
return srv.ServeTLS(rln, "", "") return srv.ServeTLS(rln, "", "")
} }

View File

@ -992,6 +992,7 @@ func (c *sclient) run(ctx context.Context) error {
c.startStatsLoop(sendCtx) c.startStatsLoop(sendCtx)
fmt.Printf("Mike %s : %v\n", c.nc.LocalAddr().String(), c.canMesh)
for { for {
ft, fl, err := readFrameHeader(c.br) ft, fl, err := readFrameHeader(c.br)
c.debugLogf("read frame type %d len %d err %v", ft, fl, err) c.debugLogf("read frame type %d len %d err %v", ft, fl, err)
@ -1007,6 +1008,8 @@ func (c *sclient) run(ctx context.Context) error {
return fmt.Errorf("client %s: readFrameHeader: %w", c.key.ShortString(), err) return fmt.Errorf("client %s: readFrameHeader: %w", c.key.ShortString(), err)
} }
c.s.noteClientActivity(c) c.s.noteClientActivity(c)
fmt.Printf("0x%X\n", ft)
switch ft { switch ft {
case frameNotePreferred: case frameNotePreferred:
err = c.handleFrameNotePreferred(ft, fl) err = c.handleFrameNotePreferred(ft, fl)
@ -1162,6 +1165,9 @@ func (c *sclient) handleFrameForwardPacket(ft frameType, fl uint32) error {
// handleFrameSendPacket reads a "send packet" frame from the client. // handleFrameSendPacket reads a "send packet" frame from the client.
func (c *sclient) handleFrameSendPacket(ft frameType, fl uint32) error { func (c *sclient) handleFrameSendPacket(ft frameType, fl uint32) error {
if !c.canMesh {
return fmt.Errorf("insufficient permissions")
}
s := c.s s := c.s
dstKey, contents, err := s.recvPacket(c.br, fl) dstKey, contents, err := s.recvPacket(c.br, fl)
@ -1352,6 +1358,8 @@ func (s *Server) usingMeshPort(port string) bool {
return true return true
} }
fmt.Printf("Mike %s/%s\n", s.meshPort, port)
return s.meshPort == port return s.meshPort == port
} }

View File

@ -291,6 +291,7 @@ func (d *derpProber) probeMesh(from, to string) ProbeClass {
} }
dm := d.lastDERPMap dm := d.lastDERPMap
fromN.DERPPort = 8888
return derpProbeNodePair(ctx, dm, fromN, toN, d.meshKey) return derpProbeNodePair(ctx, dm, fromN, toN, d.meshKey)
}, },
Class: "derp_mesh", Class: "derp_mesh",
@ -720,12 +721,12 @@ func derpProbeBandwidth(ctx context.Context, dm *tailcfg.DERPMap, from, to *tail
// derpProbeNodePair sends a small packet between two local DERP clients // derpProbeNodePair sends a small packet between two local DERP clients
// connected to two DERP servers. // connected to two DERP servers.
func derpProbeNodePair(ctx context.Context, dm *tailcfg.DERPMap, from, to *tailcfg.DERPNode, meshKey string) (err error) { func derpProbeNodePair(ctx context.Context, dm *tailcfg.DERPMap, from, to *tailcfg.DERPNode, meshKey string) (err error) {
fromc, err := newConn(ctx, dm, from, true, meshKey) fromc, err := newConn(ctx, dm, from, !to.InsecureForTests, meshKey)
if err != nil { if err != nil {
return err return err
} }
defer fromc.Close() defer fromc.Close()
toc, err := newConn(ctx, dm, to, true, meshKey) toc, err := newConn(ctx, dm, to, !from.InsecureForTests, meshKey)
if err != nil { if err != nil {
return err return err
} }