Skip to content

Commit 64c6e33

Browse files
committed
bug: fix Unix address on Windows with client
1 parent b3f3d18 commit 64c6e33

File tree

4 files changed

+5
-59
lines changed

4 files changed

+5
-59
lines changed

client_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ func startGnetClient(t *testing.T, cli *Client, network, addr string, multicore,
543543
}
544544
if netDial {
545545
var netConn net.Conn
546-
netConn, err = stdDial(network, addr)
546+
netConn, err = net.Dial(network, addr)
547547
assert.NoError(t, err)
548548
c, err = cli.EnrollContext(netConn, handler)
549549
} else {

client_windows.go

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ package gnet
1717
import (
1818
"context"
1919
"net"
20-
"os"
21-
"path/filepath"
22-
"sync"
2320

2421
"golang.org/x/sync/errgroup"
2522

@@ -120,29 +117,6 @@ func (cli *Client) Stop() error {
120117
return err
121118
}
122119

123-
var (
124-
mu sync.RWMutex
125-
unixAddrDirs = make(map[string]string)
126-
)
127-
128-
// unixAddr uses os.MkdirTemp to get a name that is unique.
129-
func unixAddr(addr string) string {
130-
// Pass an empty pattern to get a directory name that is as short as possible.
131-
// If we end up with a name longer than the sun_path field in the sockaddr_un
132-
// struct, we won't be able to make the syscall to open the socket.
133-
d, err := os.MkdirTemp("", "")
134-
if err != nil {
135-
panic(err)
136-
}
137-
138-
tmpAddr := filepath.Join(d, addr)
139-
mu.Lock()
140-
unixAddrDirs[tmpAddr] = d
141-
mu.Unlock()
142-
143-
return tmpAddr
144-
}
145-
146120
func (cli *Client) Dial(network, addr string) (Conn, error) {
147121
return cli.DialContext(network, addr, nil)
148122
}
@@ -152,18 +126,9 @@ func (cli *Client) DialContext(network, addr string, ctx any) (Conn, error) {
152126
c net.Conn
153127
err error
154128
)
155-
if network == "unix" {
156-
laddr, _ := net.ResolveUnixAddr(network, unixAddr(addr))
157-
raddr, _ := net.ResolveUnixAddr(network, addr)
158-
c, err = net.DialUnix(network, laddr, raddr)
159-
if err != nil {
160-
return nil, err
161-
}
162-
} else {
163-
c, err = net.Dial(network, addr)
164-
if err != nil {
165-
return nil, err
166-
}
129+
c, err = net.Dial(network, addr)
130+
if err != nil {
131+
return nil, err
167132
}
168133
return cli.EnrollContext(c, ctx)
169134
}
@@ -219,12 +184,6 @@ func (cli *Client) EnrollContext(nc net.Conn, ctx any) (gc Conn, err error) {
219184
n, err := nc.Read(buffer[:])
220185
if err != nil {
221186
el.ch <- &netErr{c, err}
222-
mu.RLock()
223-
tmpDir := unixAddrDirs[nc.LocalAddr().String()]
224-
mu.RUnlock()
225-
if err := os.RemoveAll(tmpDir); err != nil {
226-
logging.Errorf("failed to remove temporary directory for unix local address: %v", err)
227-
}
228187
return
229188
}
230189
el.ch <- packTCPConn(c, buffer[:n])

os_unix_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ import (
2525
goPool "github.com/panjf2000/gnet/v2/pkg/pool/goroutine"
2626
)
2727

28-
var (
29-
SysClose = unix.Close
30-
stdDial = net.Dial
31-
)
28+
var SysClose = unix.Close
3229

3330
// NOTE: TestServeMulticast can fail with "write: no buffer space available" on Wi-Fi interface.
3431
func TestServeMulticast(t *testing.T) {

os_windows_test.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,9 @@
33
package gnet
44

55
import (
6-
"net"
76
"syscall"
87
)
98

109
func SysClose(fd int) error {
1110
return syscall.CloseHandle(syscall.Handle(fd))
1211
}
13-
14-
func stdDial(network, addr string) (net.Conn, error) {
15-
if network == "unix" {
16-
laddr, _ := net.ResolveUnixAddr(network, unixAddr(addr))
17-
raddr, _ := net.ResolveUnixAddr(network, addr)
18-
return net.DialUnix(network, laddr, raddr)
19-
}
20-
return net.Dial(network, addr)
21-
}

0 commit comments

Comments
 (0)