diff --git a/uri.go b/uri.go index 0650c930d1..0788a6082e 100644 --- a/uri.go +++ b/uri.go @@ -406,7 +406,7 @@ func (u *URI) RequestURI() []byte { } else { dst = appendQuotedPath(u.requestURI[:0], u.Path()) } - if u.queryArgs.Len() > 0 { + if u.parsedQueryArgs && u.queryArgs.Len() > 0 { dst = append(dst, '?') dst = u.queryArgs.AppendBytes(dst) } else if len(u.queryString) > 0 { diff --git a/uri_test.go b/uri_test.go index cebaa73521..7cfb4caa3b 100644 --- a/uri_test.go +++ b/uri_test.go @@ -386,3 +386,15 @@ func testURIParse(t *testing.T, u *URI, host, uri, t.Fatalf("Unexpected hash %q. Expected %q. host=%q, uri=%q", u.Hash(), expectedHash, host, uri) } } + +func TestURIWithQuerystringOverride(t *testing.T) { + var u URI + u.SetQueryString("q1=foo&q2=bar") + u.QueryArgs().Add("q3", "baz") + u.SetQueryString("q1=foo&q2=bar&q4=quux") + uriString := string(u.RequestURI()) + + if uriString != "/?q1=foo&q2=bar&q4=quux" { + t.Fatalf("Expected Querystring to be overriden but was %s ", uriString) + } +} \ No newline at end of file