Skip to content

Commit 4312354

Browse files
committed
controllers/krate/publish: Inline Maximums calculation
This is only used in the publish endpoint, and can apparently be written quite a bit more concise... :D
1 parent f55f67e commit 4312354

File tree

2 files changed

+8
-33
lines changed

2 files changed

+8
-33
lines changed

src/controllers/krate/publish.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ use crate::rate_limiter::LimitedAction;
3737
use crate::schema::*;
3838
use crate::sql::canon_crate_name;
3939
use crate::util::errors::{bad_request, custom, internal, AppResult, BoxedAppError};
40-
use crate::util::Maximums;
4140
use crate::views::{
4241
EncodableCrate, EncodableCrateDependency, GoodCrate, PublishMetadata, PublishWarnings,
4342
};
@@ -146,18 +145,18 @@ pub async fn publish(app: AppState, req: Parts, body: Body) -> AppResult<Json<Go
146145
.check_rate_limit(auth.user().id, rate_limit_action, &mut conn)
147146
.await?;
148147

149-
let maximums = Maximums::new(
150-
existing_crate.as_ref().and_then(|c| c.max_upload_size),
151-
app.config.max_upload_size,
152-
app.config.max_unpack_size,
153-
);
148+
let max_upload_size = existing_crate
149+
.as_ref()
150+
.and_then(|c| c.max_upload_size)
151+
.and_then(|m| u32::try_from(m).ok())
152+
.unwrap_or(app.config.max_upload_size);
154153

155-
let tarball_bytes = read_tarball_bytes(&mut reader, maximums.max_upload_size).await?;
154+
let tarball_bytes = read_tarball_bytes(&mut reader, max_upload_size).await?;
156155
let content_length = tarball_bytes.len() as u64;
157156

158157
let pkg_name = format!("{}-{}", &*metadata.name, &version_string);
159-
let tarball_info =
160-
process_tarball(&pkg_name, &*tarball_bytes, maximums.max_unpack_size).await?;
158+
let max_unpack_size = std::cmp::max(app.config.max_unpack_size, max_upload_size as u64);
159+
let tarball_info = process_tarball(&pkg_name, &*tarball_bytes, max_unpack_size).await?;
161160

162161
// `unwrap()` is safe here since `process_tarball()` validates that
163162
// we only accept manifests with a `package` section and without

src/util.rs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::cmp;
2-
31
pub use self::bytes_request::BytesRequest;
42
pub use self::io_util::{read_fill, read_le_u32};
53
pub use self::request_helpers::*;
@@ -12,25 +10,3 @@ mod request_helpers;
1210
pub mod rfc3339;
1311
pub mod token;
1412
pub mod tracing;
15-
16-
#[derive(Debug, Copy, Clone)]
17-
pub struct Maximums {
18-
pub max_upload_size: u32,
19-
pub max_unpack_size: u64,
20-
}
21-
22-
impl Maximums {
23-
pub fn new(
24-
krate_max_upload: Option<i32>,
25-
app_max_upload: u32,
26-
app_max_unpack: u64,
27-
) -> Maximums {
28-
let krate_max_upload = krate_max_upload.and_then(|m| u32::try_from(m).ok());
29-
let max_upload_size = krate_max_upload.unwrap_or(app_max_upload);
30-
let max_unpack_size = cmp::max(app_max_unpack, max_upload_size as u64);
31-
Maximums {
32-
max_upload_size,
33-
max_unpack_size,
34-
}
35-
}
36-
}

0 commit comments

Comments
 (0)