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
|
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
|
// JoinHostPort is like net.JoinHostPort, but where the port
|
||||||
// is StartPort + offset.
|
// is StartPort + offset.
|
||||||
func (pa ParsedAddress) JoinHostPort(offset uint) string {
|
func (pa ParsedAddress) JoinHostPort(offset uint) string {
|
||||||
|
if pa.IsUnixNetwork() {
|
||||||
|
return pa.Host
|
||||||
|
}
|
||||||
return net.JoinHostPort(pa.Host, strconv.Itoa(int(pa.StartPort+offset)))
|
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)
|
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
|
// ParseNetworkAddress parses addr into its individual
|
||||||
// components. The input string is expected to be of
|
// components. The input string is expected to be of
|
||||||
// the form "network/host:port-range" where any part is
|
// the form "network/host:port-range" where any part is
|
||||||
|
@ -307,7 +320,7 @@ func ParseNetworkAddress(addr string) (ParsedAddress, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ParsedAddress{}, err
|
return ParsedAddress{}, err
|
||||||
}
|
}
|
||||||
if network == "unix" || network == "unixgram" || network == "unixpacket" {
|
if isUnixNetwork(network) {
|
||||||
return ParsedAddress{
|
return ParsedAddress{
|
||||||
Network: network,
|
Network: network,
|
||||||
Host: host,
|
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