Skip to content

Commit 34ee18c

Browse files
committed
Revert "Merge #1263"
This reverts commit 487166c, reversing changes made to 4ad168f. We've been seeing segfaults happen on a regular basis since this was deployed. This is the only commit in that deploy which could be causing it.
1 parent 8213b4a commit 34ee18c

File tree

12 files changed

+523
-851
lines changed

12 files changed

+523
-851
lines changed

Cargo.lock

Lines changed: 485 additions & 808 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,22 @@ rustdoc-args = [
2828

2929
[dependencies]
3030
cargo-registry-s3 = { path = "src/s3", version = "0.2.0" }
31-
rand = "0.4"
31+
rand = "0.3"
3232
git2 = "0.6.4"
33-
flate2 = "1.0"
33+
flate2 = "0.2"
3434
semver = "0.5"
35-
url = "1.2"
35+
url = "1.2.1"
3636
tar = "0.4.13"
3737

38-
openssl = "0.10.0"
38+
openssl = "0.9.14"
3939
curl = "0.4"
4040
oauth2 = "0.3"
4141
log = "0.3"
42-
env_logger = "0.5"
43-
hex = "0.3"
42+
env_logger = "0.4"
43+
hex = "0.2"
4444
htmlescape = "0.3.1"
4545
license-exprs = "^1.3"
46-
dotenv = "0.11.0"
46+
dotenv = "0.10.0"
4747
toml = "0.4"
4848
diesel = { version = "1.1.0", features = ["postgres", "serde_json", "chrono", "r2d2"] }
4949
diesel_full_text_search = "1.0.0"
@@ -54,13 +54,11 @@ chrono = { version = "0.4.0", features = ["serde"] }
5454
comrak = { version = "0.2.3", default-features = false }
5555
ammonia = "1.0.0"
5656
docopt = "0.8.1"
57-
itertools = "0.7.0"
57+
itertools = "0.6.0"
58+
lettre = "0.6"
5859
scheduled-thread-pool = "0.2.0"
5960
derive_deref = "1.0.0"
6061

61-
lettre = "0.7"
62-
lettre_email = "0.7"
63-
6462
conduit = "0.8"
6563
conduit-conditional-get = "0.8"
6664
conduit-cookie = "0.8"
@@ -82,7 +80,7 @@ tokio-core = "0.1"
8280
tokio-service = "0.1"
8381

8482
[build-dependencies]
85-
dotenv = "0.11"
83+
dotenv = "0.10"
8684
diesel = { version = "1.1.0", features = ["postgres"] }
8785
diesel_migrations = { version = "1.1.0", features = ["postgres"] }
8886

src/bin/render-readmes.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,10 @@ fn get_readme(config: &Config, version: &Version, krate_name: &str) -> Option<St
220220
return None;
221221
}
222222
let reader = Cursor::new(response);
223-
let reader = GzDecoder::new(reader);
223+
let reader = GzDecoder::new(reader).expect(&format!(
224+
"[{}-{}] Invalid gzip header",
225+
krate_name, version.num
226+
));
224227
let mut archive = Archive::new(reader);
225228
let mut entries = archive.entries().expect(&format!(
226229
"[{}-{}] Invalid tar archive entries",

src/bin/server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::sync::mpsc::channel;
1414

1515
fn main() {
1616
// Initialize logging
17-
env_logger::init();
17+
env_logger::init().unwrap();
1818
let config: cargo_registry::Config = Default::default();
1919

2020
// If there isn't a git checkout containing the crate index repo at the path specified

src/controllers/krate/publish.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,11 @@ pub fn publish(req: &mut Request) -> CargoResult<Response> {
140140
.upload_crate(req, &krate, readme, max, max_unpack, vers)?;
141141
version.record_readme_rendering(&conn)?;
142142

143-
let mut hex_cksum = String::new();
144-
cksum.write_hex(&mut hex_cksum)?;
145-
146143
// Register this crate in our local git repo.
147144
let git_crate = git::Crate {
148145
name: name.to_string(),
149146
vers: vers.to_string(),
150-
cksum: hex_cksum,
147+
cksum: cksum.to_hex(),
151148
features,
152149
deps: git_deps,
153150
yanked: Some(false),

src/email.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ use dotenv::dotenv;
22
use std::env;
33
use std::path::Path;
44
use util::{bad_request, CargoResult};
5-
6-
use lettre::file::FileEmailTransport;
7-
use lettre::EmailTransport;
8-
use lettre::smtp::SmtpTransport;
9-
use lettre::smtp::authentication::{Credentials, Mechanism};
10-
11-
use lettre_email::{Email, EmailBuilder};
5+
use lettre::email::{Email, EmailBuilder};
6+
use lettre::transport::file::FileEmailTransport;
7+
use lettre::transport::EmailTransport;
8+
use lettre::transport::smtp::{SecurityLevel, SmtpTransportBuilder};
9+
use lettre::transport::smtp::SUBMISSION_PORT;
10+
use lettre::transport::smtp::authentication::Mechanism;
1211

1312
#[derive(Debug)]
1413
pub struct MailgunConfigVars {
@@ -77,21 +76,20 @@ fn send_email(recipient: &str, subject: &str, body: &str) -> CargoResult<()> {
7776

7877
match mailgun_config {
7978
Some(mailgun_config) => {
80-
let mut transport = SmtpTransport::simple_builder(mailgun_config.smtp_server)?
81-
.credentials(Credentials::new(
82-
mailgun_config.smtp_login,
83-
mailgun_config.smtp_password,
84-
))
85-
.smtp_utf8(true)
86-
.authentication_mechanism(Mechanism::Plain)
87-
.build();
79+
let mut transport =
80+
SmtpTransportBuilder::new((mailgun_config.smtp_server.as_str(), SUBMISSION_PORT))?
81+
.credentials(&mailgun_config.smtp_login, &mailgun_config.smtp_password)
82+
.security_level(SecurityLevel::AlwaysEncrypt)
83+
.smtp_utf8(true)
84+
.authentication_mechanism(Mechanism::Plain)
85+
.build();
8886

89-
let result = transport.send(&email);
87+
let result = transport.send(email.clone());
9088
result.map_err(|_| bad_request("Error in sending email"))?;
9189
}
9290
None => {
9391
let mut sender = FileEmailTransport::new(Path::new("/tmp"));
94-
let result = sender.send(&email);
92+
let result = sender.send(email.clone());
9593
result.map_err(|_| bad_request("Email file could not be generated"))?;
9694
}
9795
}

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ extern crate git2;
2222
extern crate hex;
2323
extern crate htmlescape;
2424
extern crate lettre;
25-
extern crate lettre_email;
2625
extern crate license_exprs;
2726
#[macro_use]
2827
extern crate log;

src/s3/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ name = "s3"
1313
path = "lib.rs"
1414

1515
[dependencies]
16-
openssl = "0.10"
16+
openssl = "0.9"
1717
chrono = "0.4"
1818
curl = "0.4"
19-
base64 = "0.9"
19+
base64 = "0.6"

src/s3/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ impl Bucket {
134134
let key = PKey::hmac(self.secret_key.as_bytes()).unwrap();
135135
let mut signer = Signer::new(MessageDigest::sha1(), &key).unwrap();
136136
signer.update(string.as_bytes()).unwrap();
137-
encode(&signer.sign_to_vec().unwrap()[..])
137+
encode(&signer.finish().unwrap()[..])
138138
};
139139
format!("AWS {}:{}", self.access_key, signature)
140140
}

src/tests/all.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ fn new_crate_to_body_with_io(
696696
) -> Vec<u8> {
697697
let mut tarball = Vec::new();
698698
{
699-
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::default()));
699+
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::Default));
700700
for &mut (name, ref mut data, size) in files {
701701
let mut header = tar::Header::new_gnu();
702702
t!(header.set_path(name));
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_whitelist/foo_whitelist-1.1.0.crate","method":"PUT","headers":[["Authorization","AWS AKIAICL5IWUZYWWKA7JA:qt4nSgvxT4p0mzUU9mA+lDtnKdE="],["Proxy-Connection","Keep-Alive"],["Date","Fri, 15 Sep 2017 07:53:06 -0700"],["Accept","*/*"],["Content-Type","application/x-tar"],["Host","alexcrichton-test.s3.amazonaws.com"],["Content-Length","96"]],"body":[31, 139, 8, 0, 0, 0, 0, 0, 0, 255, 237, 198, 77, 10, 128, 32, 16, 6, 208, 57, 138, 23, 200, 212, 160, 57, 78, 24, 244, 51, 16, 8, 57, 209, 245, 67, 162, 125, 43, 33, 250, 222, 234, 205, 41, 13, 231, 42, 58, 109, 146, 181, 241, 214, 91, 215, 142, 178, 80, 13, 238, 214, 113, 112, 207, 139, 114, 238, 3, 83, 21, 71, 214, 184, 27, 67, 63, 21, 1, 0, 0, 224, 243, 8, 0, 224, 165, 11, 110, 88, 191, 250, 0, 14, 0, 0]},"response":{"status":200,"headers":[["Date","Fri, 15 Sep 2017 14:53:07 GMT"],["x-amz-request-id","A154F439BE2F1178"],["Server","AmazonS3"],["ETag","\"9facb520b24bd39bb1ee070422257b83\""],["x-amz-id-2","sJQf1gwHhtO9UupUzVzcH5l1yvS64tKrNFy59yuhFRCrLpSEGAAm/S4LNhUDFCqS2HOsyw0FXBo="],["Content-Length","0"]],"body":[]}}]
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_whitelist/foo_whitelist-1.1.0.crate","method":"PUT","headers":[["Authorization","AWS AKIAICL5IWUZYWWKA7JA:qt4nSgvxT4p0mzUU9mA+lDtnKdE="],["Proxy-Connection","Keep-Alive"],["Date","Fri, 15 Sep 2017 07:53:06 -0700"],["Accept","*/*"],["Content-Type","application/x-tar"],["Host","alexcrichton-test.s3.amazonaws.com"],["Content-Length","95"]],"body":[31,139,8,0,0,0,0,0,0,255,237,200,61,10,128,48,12,6,208,28,37,23,176,166,10,237,113,164,130,63,1,161,96,35,94,223,193,205,201,169,32,126,111,124,115,206,195,185,170,77,155,22,107,188,243,78,218,81,23,170,65,110,125,236,228,249,33,72,100,170,225,40,150,118,102,250,169,4,0,0,0,159,71,0,0,47,93,157,95,173,158,0,14,0,0]},"response":{"status":200,"headers":[["Date","Fri, 15 Sep 2017 14:53:07 GMT"],["x-amz-request-id","A154F439BE2F1178"],["Server","AmazonS3"],["ETag","\"9facb520b24bd39bb1ee070422257b83\""],["x-amz-id-2","sJQf1gwHhtO9UupUzVzcH5l1yvS64tKrNFy59yuhFRCrLpSEGAAm/S4LNhUDFCqS2HOsyw0FXBo="],["Content-Length","0"]],"body":[]}}]

src/uploaders.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ fn verify_tarball(
250250
max_unpack: u64,
251251
) -> CargoResult<()> {
252252
// All our data is currently encoded with gzip
253-
let decoder = GzDecoder::new(tarball);
253+
let decoder = GzDecoder::new(tarball)?;
254254

255255
// Don't let gzip decompression go into the weeeds, apply a fixed cap after
256256
// which point we say the decompressed source is "too large".
@@ -278,5 +278,5 @@ fn verify_tarball(
278278
fn hash(data: &[u8]) -> Vec<u8> {
279279
let mut hasher = Hasher::new(MessageDigest::sha256()).unwrap();
280280
hasher.update(data).unwrap();
281-
hasher.finish().unwrap().to_vec()
281+
hasher.finish2().unwrap().to_vec()
282282
}

0 commit comments

Comments
 (0)