podman machine: fix port forwarding with proxy

When a user has a http proxy configured the VM will use it. However
since gvproxy can only be reached internally from within the VM the port
forwarding HTTP API call should not be redirected to the proxy.

[NO NEW TESTS NEEDED]

Fixes #13628

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger 2022-03-24 11:36:15 +01:00
parent 80123ca505
commit c0bbca8c44
No known key found for this signature in database
GPG Key ID: EB145DD938A3CAF2
1 changed files with 13 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import (
"net/http"
"strconv"
"strings"
"time"
"github.com/containers/common/libnetwork/types"
"github.com/sirupsen/logrus"
@ -36,7 +37,18 @@ func requestMachinePorts(expose bool, ports []types.PortMapping) error {
url = url + "unexpose"
}
ctx := context.Background()
client := &http.Client{}
client := &http.Client{
Transport: &http.Transport{
// make sure to not set a proxy here so explicitly ignore the proxy
// since we want to talk directly to gvproxy
// https://github.com/containers/podman/issues/13628
Proxy: nil,
MaxIdleConns: 50,
IdleConnTimeout: 30 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
}
buf := new(bytes.Buffer)
for num, port := range ports {
protocols := strings.Split(port.Protocol, ",")
@ -78,7 +90,6 @@ func requestMachinePorts(expose bool, ports []types.PortMapping) error {
}
func makeMachineRequest(ctx context.Context, client *http.Client, url string, buf io.Reader) error {
//var buf io.ReadWriter
req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, buf)
if err != nil {
return err