Skip to content

Commit b6fb84c

Browse files
committed
serve: serialize listening for each port for stabilizing
1 parent 432a242 commit b6fb84c

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

cmd/serve.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,11 @@ func serveTCP(ctx context.Context) error {
9393

9494
eg, ctx := errgroup.WithContext(ctx)
9595
for _, listenAddr := range listenAddrs {
96-
listenAddr := listenAddr
96+
ln, err := lc.Listen(ctx, "tcp", listenAddr)
97+
if err != nil {
98+
return fmt.Errorf("listen %q error: %s", listenAddr, err)
99+
}
97100
eg.Go(func() error {
98-
ln, err := lc.Listen(ctx, "tcp", listenAddr)
99-
if err != nil {
100-
return fmt.Errorf("listen %q error: %s", listenAddr, err)
101-
}
102-
103101
for {
104102
conn, err := ln.Accept()
105103
if err != nil {
@@ -180,13 +178,12 @@ func serveUDP(ctx context.Context) error {
180178

181179
eg, ctx := errgroup.WithContext(ctx)
182180
for _, listenAddr := range listenAddrs {
183-
listenAddr := listenAddr
181+
// create listening socket
182+
ln, err := lc.ListenPacket(ctx, "udp4", listenAddr)
183+
if err != nil {
184+
return fmt.Errorf("listen %q error: %s", listenAddr, err)
185+
}
184186
eg.Go(func() error {
185-
// create listening socket
186-
ln, err := lc.ListenPacket(ctx, "udp4", listenAddr)
187-
if err != nil {
188-
return fmt.Errorf("listen %q error: %s", listenAddr, err)
189-
}
190187
defer ln.Close()
191188

192189
bufUDPPool = sync.Pool{

0 commit comments

Comments
 (0)