(_ context.Context, _ tailnet.ResumeTokenController)
| 1289 | } |
| 1290 | |
| 1291 | func (p *pipeDialer) Dial(_ context.Context, _ tailnet.ResumeTokenController) (tailnet.ControlProtocolClients, error) { |
| 1292 | s, c := net.Pipe() |
| 1293 | p.t.Cleanup(func() { |
| 1294 | _ = s.Close() |
| 1295 | _ = c.Close() |
| 1296 | }) |
| 1297 | go func() { |
| 1298 | err := p.svc.ServeConnV2(p.ctx, s, p.streamID) |
| 1299 | p.logger.Debug(p.ctx, "piped tailnet service complete", slog.Error(err)) |
| 1300 | }() |
| 1301 | client, err := tailnet.NewDRPCClient(c, p.logger) |
| 1302 | if err != nil { |
| 1303 | _ = c.Close() |
| 1304 | return tailnet.ControlProtocolClients{}, err |
| 1305 | } |
| 1306 | coord, err := client.Coordinate(context.Background()) |
| 1307 | if err != nil { |
| 1308 | _ = c.Close() |
| 1309 | return tailnet.ControlProtocolClients{}, err |
| 1310 | } |
| 1311 | |
| 1312 | derps := &tailnet.DERPFromDRPCWrapper{} |
| 1313 | derps.Client, err = client.StreamDERPMaps(context.Background(), &proto.StreamDERPMapsRequest{}) |
| 1314 | if err != nil { |
| 1315 | _ = c.Close() |
| 1316 | return tailnet.ControlProtocolClients{}, err |
| 1317 | } |
| 1318 | return tailnet.ControlProtocolClients{ |
| 1319 | Closer: client.DRPCConn(), |
| 1320 | Coordinator: coord, |
| 1321 | DERP: derps, |
| 1322 | ResumeToken: client, |
| 1323 | Telemetry: client, |
| 1324 | }, nil |
| 1325 | } |
| 1326 | |
| 1327 | // errTimeoutOnFake is the error we send when fakes fail to send calls or receive responses before |
| 1328 | // their context times out. We don't want to send the context error since that often doesn't trigger |
nothing calls this directly
no test coverage detected