| 348 | } |
| 349 | |
| 350 | func (s *socksProxy) Start(t *testing.T) (url string) { |
| 351 | t.Helper() |
| 352 | s.Lock() |
| 353 | defer s.Unlock() |
| 354 | ln, err := net.Listen("tcp", "127.0.0.1:0") |
| 355 | if err != nil { |
| 356 | t.Fatalf("listening for SOCKS server: %v", err) |
| 357 | } |
| 358 | s.ln = ln |
| 359 | s.clientConnAddrs = map[string]bool{} |
| 360 | s.proxy.Logf = func(format string, a ...any) { |
| 361 | s.Lock() |
| 362 | defer s.Unlock() |
| 363 | if s.closed { |
| 364 | return |
| 365 | } |
| 366 | t.Logf(format, a...) |
| 367 | } |
| 368 | s.proxy.Dialer = s.dialAndRecord |
| 369 | go s.proxy.Serve(ln) |
| 370 | return fmt.Sprintf("socks5://%s", ln.Addr().String()) |
| 371 | } |
| 372 | |
| 373 | func (s *socksProxy) Close() { |
| 374 | s.Lock() |