Skip to content

Commit

Permalink
ensure socks server goroutine terminates by closing the listener
Browse files Browse the repository at this point in the history
  • Loading branch information
amircybersec committed Jul 26, 2024
1 parent 0d4ef77 commit 470a929
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
7 changes: 5 additions & 2 deletions transport/socks5/packet_listener_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package socks5
import (
"bytes"
"context"
"errors"
"net"
"testing"
"time"
Expand Down Expand Up @@ -34,12 +35,14 @@ func TestSOCKS5Associate(t *testing.T) {
// Create SOCKS5 proxy on localhost with a random port.
listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
defer listener.Close()
proxyServerAddress := listener.Addr().String()

go func() {
err := proxySrv.Serve(listener)
defer listener.Close()
require.NoError(t, err)
if !errors.Is(err, net.ErrClosed) && err != nil {
require.NoError(t, err) // Assert no error if it's not the expected close error
}
}()

// Connect to local proxy, auth and start the PacketConn.
Expand Down
12 changes: 8 additions & 4 deletions transport/socks5/stream_dialer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,12 +173,14 @@ func TestConnectWithoutAuth(t *testing.T) {
// Create SOCKS5 proxy on localhost with a random port.
listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
defer listener.Close()

go func() {
err := server.Serve(listener)
defer listener.Close()
t.Log("server is listening...")
require.NoError(t, err)
if !errors.Is(err, net.ErrClosed) && err != nil {
require.NoError(t, err) // Assert no error if it's not the expected close error
}
}()

address := listener.Addr().String()
Expand Down Expand Up @@ -206,13 +208,15 @@ func TestConnectWithAuth(t *testing.T) {
// Create SOCKS5 proxy on localhost with a random port.
listener, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
defer listener.Close()
address := listener.Addr().String()

// Create SOCKS5 proxy on localhost port 8001
go func() {
err := server.Serve(listener)
defer listener.Close()
require.NoError(t, err)
if !errors.Is(err, net.ErrClosed) && err != nil {
require.NoError(t, err) // Assert no error if it's not the expected close error
}
}()

dialer, err := NewClient(&transport.TCPEndpoint{Address: address})
Expand Down

0 comments on commit 470a929

Please sign in to comment.