mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-06 10:58:49 +03:00
Properly handle path-only addresses (also fix godoc typos)
This commit is contained in:
parent
4ff46ad447
commit
df018ea64a
3 changed files with 5 additions and 4 deletions
4
caddy.go
4
caddy.go
|
@ -236,7 +236,7 @@ func listenerAddrEqual(ln net.Listener, addr string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TCPServer is a type that can listen and serve connections.
|
// TCPServer is a type that can listen and serve connections.
|
||||||
// A TCPServer must associate with exactly or one net.Listeners.
|
// A TCPServer must associate with exactly zero or one net.Listeners.
|
||||||
type TCPServer interface {
|
type TCPServer interface {
|
||||||
// Listen starts listening by creating a new listener
|
// Listen starts listening by creating a new listener
|
||||||
// and returning it. It does not start accepting
|
// and returning it. It does not start accepting
|
||||||
|
@ -254,7 +254,7 @@ type TCPServer interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UDPServer is a type that can listen and serve packets.
|
// UDPServer is a type that can listen and serve packets.
|
||||||
// A UDPServer must associate with exactly or one net.PacketConns.
|
// A UDPServer must associate with exactly zero or one net.PacketConns.
|
||||||
type UDPServer interface {
|
type UDPServer interface {
|
||||||
// ListenPacket starts listening by creating a new packetconn
|
// ListenPacket starts listening by creating a new packetconn
|
||||||
// and returning it. It does not start accepting connections.
|
// and returning it. It does not start accepting connections.
|
||||||
|
|
|
@ -273,12 +273,12 @@ func (a Address) VHost() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// standardizeAddress parses an address string into a structured format with separate
|
// standardizeAddress parses an address string into a structured format with separate
|
||||||
// scheme, host, and port portions, as well as the original input string.
|
// scheme, host, port, and path portions, as well as the original input string.
|
||||||
func standardizeAddress(str string) (Address, error) {
|
func standardizeAddress(str string) (Address, error) {
|
||||||
input := str
|
input := str
|
||||||
|
|
||||||
// Split input into components (prepend with // to assert host by default)
|
// Split input into components (prepend with // to assert host by default)
|
||||||
if !strings.Contains(str, "//") {
|
if !strings.Contains(str, "//") && !strings.HasPrefix(str, "/") {
|
||||||
str = "//" + str
|
str = "//" + str
|
||||||
}
|
}
|
||||||
u, err := url.Parse(str)
|
u, err := url.Parse(str)
|
||||||
|
|
|
@ -50,6 +50,7 @@ func TestStandardizeAddress(t *testing.T) {
|
||||||
{`https://host:443/path/foo`, "https", "host", "443", "/path/foo", false},
|
{`https://host:443/path/foo`, "https", "host", "443", "/path/foo", false},
|
||||||
{`host:80/path`, "", "host", "80", "/path", false},
|
{`host:80/path`, "", "host", "80", "/path", false},
|
||||||
{`host:https/path`, "https", "host", "443", "/path", false},
|
{`host:https/path`, "https", "host", "443", "/path", false},
|
||||||
|
{`/path`, "", "", "", "/path", false},
|
||||||
} {
|
} {
|
||||||
actual, err := standardizeAddress(test.input)
|
actual, err := standardizeAddress(test.input)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue