mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 13:43:47 +03:00
Don't append port to unix sockets
See https://caddy.community/t/caddy-v2-php-fpm-502-error/6571?u=matt
This commit is contained in:
parent
68adfdc559
commit
33a318d173
2 changed files with 63 additions and 1 deletions
15
listeners.go
15
listeners.go
|
@ -266,9 +266,18 @@ type ParsedAddress struct {
|
|||
EndPort uint
|
||||
}
|
||||
|
||||
// IsUnixNetwork returns true if pa.Network is
|
||||
// unix, unixgram, or unixpacket.
|
||||
func (pa ParsedAddress) IsUnixNetwork() bool {
|
||||
return isUnixNetwork(pa.Network)
|
||||
}
|
||||
|
||||
// JoinHostPort is like net.JoinHostPort, but where the port
|
||||
// is StartPort + offset.
|
||||
func (pa ParsedAddress) JoinHostPort(offset uint) string {
|
||||
if pa.IsUnixNetwork() {
|
||||
return pa.Host
|
||||
}
|
||||
return net.JoinHostPort(pa.Host, strconv.Itoa(int(pa.StartPort+offset)))
|
||||
}
|
||||
|
||||
|
@ -290,6 +299,10 @@ func (pa ParsedAddress) String() string {
|
|||
return JoinNetworkAddress(pa.Network, pa.Host, port)
|
||||
}
|
||||
|
||||
func isUnixNetwork(netw string) bool {
|
||||
return netw == "unix" || netw == "unixgram" || netw == "unixpacket"
|
||||
}
|
||||
|
||||
// ParseNetworkAddress parses addr into its individual
|
||||
// components. The input string is expected to be of
|
||||
// the form "network/host:port-range" where any part is
|
||||
|
@ -307,7 +320,7 @@ func ParseNetworkAddress(addr string) (ParsedAddress, error) {
|
|||
if err != nil {
|
||||
return ParsedAddress{}, err
|
||||
}
|
||||
if network == "unix" || network == "unixgram" || network == "unixpacket" {
|
||||
if isUnixNetwork(network) {
|
||||
return ParsedAddress{
|
||||
Network: network,
|
||||
Host: host,
|
||||
|
|
|
@ -250,3 +250,52 @@ func TestParseNetworkAddress(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestJoinHostPort(t *testing.T) {
|
||||
for i, tc := range []struct {
|
||||
pa ParsedAddress
|
||||
offset uint
|
||||
expect string
|
||||
}{
|
||||
{
|
||||
pa: ParsedAddress{
|
||||
Network: "tcp",
|
||||
Host: "localhost",
|
||||
StartPort: 1234,
|
||||
EndPort: 1234,
|
||||
},
|
||||
expect: "localhost:1234",
|
||||
},
|
||||
{
|
||||
pa: ParsedAddress{
|
||||
Network: "tcp",
|
||||
Host: "localhost",
|
||||
StartPort: 1234,
|
||||
EndPort: 1235,
|
||||
},
|
||||
expect: "localhost:1234",
|
||||
},
|
||||
{
|
||||
pa: ParsedAddress{
|
||||
Network: "tcp",
|
||||
Host: "localhost",
|
||||
StartPort: 1234,
|
||||
EndPort: 1235,
|
||||
},
|
||||
offset: 1,
|
||||
expect: "localhost:1235",
|
||||
},
|
||||
{
|
||||
pa: ParsedAddress{
|
||||
Network: "unix",
|
||||
Host: "/run/php/php7.3-fpm.sock",
|
||||
},
|
||||
expect: "/run/php/php7.3-fpm.sock",
|
||||
},
|
||||
} {
|
||||
actual := tc.pa.JoinHostPort(tc.offset)
|
||||
if actual != tc.expect {
|
||||
t.Errorf("Test %d: Expected '%s' but got '%s'", i, tc.expect, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue