diff --git a/mux_test.go b/mux_test.go index 9dd06f0..f6cfb44 100644 --- a/mux_test.go +++ b/mux_test.go @@ -1226,6 +1226,17 @@ func TestSubRouter(t *testing.T) { hostTemplate: `google.com`, shouldMatch: true, }, + { + title: "Prefer scheme on child route when building URLs", + route: new(Route).Schemes("https", "ftp").Host("google.com").Subrouter().Schemes("ftp").Path("/"), + request: newRequest("GET", "ftp://google.com/"), + scheme: "ftp", + host: "google.com", + path: "/", + pathTemplate: `/`, + hostTemplate: `google.com`, + shouldMatch: true, + }, } for _, test := range tests { diff --git a/route.go b/route.go index 5c8e7c0..6d4a07a 100644 --- a/route.go +++ b/route.go @@ -396,7 +396,7 @@ func (r *Route) Schemes(schemes ...string) *Route { for k, v := range schemes { schemes[k] = strings.ToLower(v) } - if r.getBuildScheme() == "" && len(schemes) > 0 { + if r.buildScheme == "" && len(schemes) > 0 { r.buildScheme = schemes[0] } return r.addMatcher(schemeMatcher(schemes))