templates: Another context fix when host header is missing port

This commit is contained in:
Matthew Holt 2015-11-17 14:35:18 -07:00
parent a2ba00bdc8
commit b9244cdf2e
2 changed files with 11 additions and 2 deletions

View File

@ -110,6 +110,10 @@ func (c Context) Host() (string, error) {
func (c Context) Port() (string, error) {
_, port, err := net.SplitHostPort(c.Req.Host)
if err != nil {
if !strings.Contains(c.Req.Host, ":") {
// common with sites served on the default port 80
return "80", nil
}
return "", err
}
return port, nil

View File

@ -260,14 +260,19 @@ func TestPort(t *testing.T) {
},
{
input: "localhost",
expectedPort: "",
shouldErr: true, // missing port in address
expectedPort: "80", // assuming 80 is the default port
shouldErr: false,
},
{
input: ":8080",
expectedPort: "8080",
shouldErr: false,
},
{
input: "[::]",
expectedPort: "",
shouldErr: true,
},
}
for _, test := range tests {