Skip to content

Commit 3550e09

Browse files
committed
always parse with params
1 parent de6fc1b commit 3550e09

File tree

2 files changed

+27
-32
lines changed

2 files changed

+27
-32
lines changed

src/web/releases.rs

+7-11
Original file line numberDiff line numberDiff line change
@@ -584,17 +584,13 @@ pub fn search_handler(req: &mut Request) -> IronResult<Response> {
584584
let url = if matchver.rustdoc_status {
585585
let target_name = matchver.target_name;
586586
let path = format!("{base}/{krate}/{version}/{target_name}/");
587-
if queries.is_empty() {
588-
ctry!(req, Url::parse(&path))
589-
} else {
590-
ctry!(
587+
ctry!(
588+
req,
589+
Url::from_generic_url(ctry!(
591590
req,
592-
Url::from_generic_url(ctry!(
593-
req,
594-
iron::url::Url::parse_with_params(&path, queries)
595-
))
596-
)
597-
}
591+
iron::url::Url::parse_with_params(&path, queries)
592+
))
593+
)
598594
} else {
599595
ctry!(req, Url::parse(&format!("{base}/crate/{krate}/{version}")))
600596
};
@@ -842,7 +838,7 @@ mod tests {
842838

843839
assert_redirect(
844840
"/releases/search?query=some_random_crate&i-am-feeling-lucky=1",
845-
"/some_random_crate/1.0.0/some_random_crate/",
841+
"/some_random_crate/1.0.0/some_random_crate/?",
846842
web,
847843
)?;
848844
Ok(())

src/web/rustdoc.rs

+20-21
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,19 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
5353
if let Some(path) = path_in_crate {
5454
queries.insert("search".into(), path.into());
5555
}
56-
let url: iron::url::Url = req.url.clone().into();
57-
let query_pairs = url.query_pairs();
58-
queries.extend(query_pairs);
59-
let url = if queries.is_empty() {
60-
ctry!(req, iron::url::Url::parse(&url_str))
61-
} else {
62-
ctry!(req, iron::url::Url::parse_with_params(&url_str, queries))
63-
};
56+
queries.extend(req.url.as_ref().query_pairs());
57+
let url = ctry!(
58+
req,
59+
Url::from_generic_url(ctry!(
60+
req,
61+
iron::url::Url::parse_with_params(&url_str, queries)
62+
))
63+
);
6464
let (status_code, max_age) = if permanent {
6565
(status::MovedPermanently, 86400)
6666
} else {
6767
(status::Found, 0)
6868
};
69-
let url = ctry!(req, Url::from_generic_url(url));
7069
let mut resp = Response::with((status_code, Redirect(url)));
7170
resp.headers
7271
.set(CacheControl(vec![CacheDirective::MaxAge(max_age)]));
@@ -866,8 +865,8 @@ mod test {
866865
"/dummy/0.3.0/all.html",
867866
web,
868867
)?;
869-
assert_redirect("/dummy/0.3.0/", base, web)?;
870-
assert_redirect("/dummy/0.3.0/index.html", base, web)?;
868+
assert_redirect("/dummy/0.3.0/", &format!("{}?", base), web)?;
869+
assert_redirect("/dummy/0.3.0/index.html", &format!("{}?", base), web)?;
871870
Ok(())
872871
});
873872
}
@@ -1184,7 +1183,7 @@ mod test {
11841183
.create()?;
11851184

11861185
let web = env.frontend();
1187-
assert_redirect("/fake%2Dcrate", "/fake-crate/latest/fake_crate/", web)?;
1186+
assert_redirect("/fake%2Dcrate", "/fake-crate/latest/fake_crate/?", web)?;
11881187

11891188
Ok(())
11901189
});
@@ -1214,37 +1213,37 @@ mod test {
12141213

12151214
let web = env.frontend();
12161215

1217-
assert_redirect("/dummy_dash", "/dummy-dash/latest/dummy_dash/", web)?;
1218-
assert_redirect("/dummy_dash/*", "/dummy-dash/0.2.0/dummy_dash/", web)?;
1219-
assert_redirect("/dummy_dash/0.1.0", "/dummy-dash/0.1.0/dummy_dash/", web)?;
1216+
assert_redirect("/dummy_dash", "/dummy-dash/latest/dummy_dash/?", web)?;
1217+
assert_redirect("/dummy_dash/*", "/dummy-dash/0.2.0/dummy_dash/?", web)?;
1218+
assert_redirect("/dummy_dash/0.1.0", "/dummy-dash/0.1.0/dummy_dash/?", web)?;
12201219
assert_redirect(
12211220
"/dummy-underscore",
1222-
"/dummy_underscore/latest/dummy_underscore/",
1221+
"/dummy_underscore/latest/dummy_underscore/?",
12231222
web,
12241223
)?;
12251224
assert_redirect(
12261225
"/dummy-underscore/*",
1227-
"/dummy_underscore/0.2.0/dummy_underscore/",
1226+
"/dummy_underscore/0.2.0/dummy_underscore/?",
12281227
web,
12291228
)?;
12301229
assert_redirect(
12311230
"/dummy-underscore/0.1.0",
1232-
"/dummy_underscore/0.1.0/dummy_underscore/",
1231+
"/dummy_underscore/0.1.0/dummy_underscore/?",
12331232
web,
12341233
)?;
12351234
assert_redirect(
12361235
"/dummy-mixed_separators",
1237-
"/dummy_mixed-separators/latest/dummy_mixed_separators/",
1236+
"/dummy_mixed-separators/latest/dummy_mixed_separators/?",
12381237
web,
12391238
)?;
12401239
assert_redirect(
12411240
"/dummy_mixed_separators/*",
1242-
"/dummy_mixed-separators/0.2.0/dummy_mixed_separators/",
1241+
"/dummy_mixed-separators/0.2.0/dummy_mixed_separators/?",
12431242
web,
12441243
)?;
12451244
assert_redirect(
12461245
"/dummy-mixed-separators/0.1.0",
1247-
"/dummy_mixed-separators/0.1.0/dummy_mixed_separators/",
1246+
"/dummy_mixed-separators/0.1.0/dummy_mixed_separators/?",
12481247
web,
12491248
)?;
12501249

0 commit comments

Comments
 (0)