Skip to content

Commit 3cda370

Browse files
committed
Make sure err isn't nil when returning failure
Signed-off-by: Jan Dubois <[email protected]>
1 parent 4d56dab commit 3cda370

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

hack/test-templates.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,9 +307,11 @@ if [[ -n ${CHECKS["port-forwards"]} ]]; then
307307
fi
308308
limactl shell "$NAME" $sudo $CONTAINER_ENGINE info
309309
limactl shell "$NAME" $sudo $CONTAINER_ENGINE pull --quiet ${nginx_image}
310-
limactl shell "$NAME" $sudo $CONTAINER_ENGINE run -d --name nginx -p 8888:80 ${nginx_image}
311-
312-
timeout 3m bash -euxc "until curl -f --retry 30 --retry-connrefused http://${hostip}:8888; do sleep 3; done"
310+
for hostport in 8888 80; do
311+
limactl shell "$NAME" $sudo $CONTAINER_ENGINE run -d --name nginx -p ${hostport}:80 ${nginx_image}
312+
timeout 3m bash -euxc "until curl -f --retry 30 --retry-connrefused http://${hostip}:${hostport}; do sleep 3; done"
313+
limactl shell "$NAME" $sudo $CONTAINER_ENGINE rm -f nginx
314+
done
313315
fi
314316
fi
315317
set +x

pkg/portfwd/listener.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"net"
7+
"strings"
78
"sync"
89

910
guestagentclient "github.com/lima-vm/lima/pkg/guestagent/api/client"
@@ -42,6 +43,7 @@ func (p *ClosableListeners) Forward(ctx context.Context, client *guestagentclien
4243
}
4344

4445
func (p *ClosableListeners) Remove(_ context.Context, protocol, hostAddress, guestAddress string) {
46+
logrus.Debugf("removing listener for hostAddress: %s, guestAddress: %s", hostAddress, guestAddress)
4547
key := key(protocol, hostAddress, guestAddress)
4648
switch protocol {
4749
case "tcp", "tcp6":
@@ -65,7 +67,6 @@ func (p *ClosableListeners) Remove(_ context.Context, protocol, hostAddress, gue
6567

6668
func (p *ClosableListeners) forwardTCP(ctx context.Context, client *guestagentclient.GuestAgentClient, hostAddress, guestAddress string) {
6769
key := key("tcp", hostAddress, guestAddress)
68-
defer p.Remove(ctx, "tcp", hostAddress, guestAddress)
6970

7071
p.listenersRW.Lock()
7172
_, ok := p.listeners[key]
@@ -75,16 +76,21 @@ func (p *ClosableListeners) forwardTCP(ctx context.Context, client *guestagentcl
7576
}
7677
tcpLis, err := Listen(ctx, p.listenConfig, hostAddress)
7778
if err != nil {
78-
logrus.Errorf("failed to accept TCP connection: %v", err)
79+
logrus.Errorf("failed to listen to TCP connection: %v", err)
7980
p.listenersRW.Unlock()
8081
return
8182
}
83+
defer p.Remove(ctx, "tcp", hostAddress, guestAddress)
8284
p.listeners[key] = tcpLis
8385
p.listenersRW.Unlock()
8486
for {
8587
conn, err := tcpLis.Accept()
8688
if err != nil {
8789
logrus.Errorf("failed to accept TCP connection: %v", err)
90+
if strings.Contains(err.Error(), "pseudoloopback") {
91+
// don't stop forwarding because the forwarder has rejected a non-local address
92+
continue
93+
}
8894
return
8995
}
9096
go HandleTCPConnection(ctx, client, conn, guestAddress)

pkg/portfwd/listener_darwin.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,12 @@ func (p pseudoLoopbackListener) Accept() (net.Conn, error) {
6969
return nil, err
7070
}
7171
if remoteAddrIP != "127.0.0.1" {
72-
logrus.WithError(err).Debugf("pseudoloopback forwarder: rejecting non-loopback remoteAddr %q", remoteAddr)
72+
err := fmt.Errorf("pseudoloopback forwarder: rejecting non-loopback remoteAddr %q", remoteAddr)
73+
logrus.Debug(err)
74+
conn.Close()
7375
return nil, err
7476
}
77+
logrus.Infof("pseudoloopback forwarder: accepting connection from %q", remoteAddr)
7578
return conn, nil
7679
}
7780

0 commit comments

Comments
 (0)