Skip to content

Commit 8876321

Browse files
committed
fixup! ACME: certificate issue and renewal implementation.
1 parent 64cf3b1 commit 8876321

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ libc = "0.2.174"
2424
openssl = { version = "0.10.73", features = ["bindgen"] }
2525
openssl-foreign-types = { package = "foreign-types", version = "0.3" }
2626
openssl-sys = { version = "0.9.109", features = ["bindgen"] }
27+
scopeguard = "1"
2728
serde = { version = "1.0.219", features = ["derive"] }
2829
serde_json = "1.0.142"
2930
siphasher = { version = "1.0.1", default-features = false }

src/acme.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,11 +386,6 @@ where
386386

387387
for challenge in authorization.challenges {
388388
result = self.do_challenge(order, &identifier, &challenge).await;
389-
// unregister here because ownership for scoped guard inside of
390-
// do_challenge would be too complicated
391-
if let Some(solver) = self.find_solver_for(&challenge.kind) {
392-
let _ = solver.unregister(&identifier, &challenge);
393-
}
394389

395390
if result.is_ok() {
396391
break;
@@ -442,9 +437,15 @@ where
442437
return Ok(());
443438
}
444439

445-
self.find_solver_for(&challenge.kind)
446-
.ok_or(anyhow!("no solver for {:?}", challenge.kind))?
447-
.register(ctx, identifier, challenge)?;
440+
let solver = self
441+
.find_solver_for(&challenge.kind)
442+
.ok_or(anyhow!("no solver for {:?}", challenge.kind))?;
443+
444+
solver.register(ctx, identifier, challenge)?;
445+
446+
scopeguard::defer! {
447+
let _ = solver.unregister(identifier, challenge);
448+
};
448449

449450
// "{}" in request payload initiates the challenge, "" checks the status.
450451
let mut payload: &[u8] = b"{}";

0 commit comments

Comments
 (0)