rust: bssl-tls: Drop the async private key task ... as soon as it is resolved. For `async` private key delegate users there is no observable effect, but the destructor is unnecessarily delayed even when the task is resolved to some result. Signed-off-by: Xiangfei Ding <xfding@google.com> Change-Id: Ia06e14cced35d66dac3892ecf37acc836a6a6964 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/101409 Reviewed-by: Adam Langley <agl@google.com> Reviewed-by: Rudolf Polzer <rpolzer@google.com> Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/rust/bssl-tls/src/credentials/methods.rs b/rust/bssl-tls/src/credentials/methods.rs index f5a34da..909a05c 100644 --- a/rust/bssl-tls/src/credentials/methods.rs +++ b/rust/bssl-tls/src/credentials/methods.rs
@@ -259,12 +259,14 @@ // Safety: `out_len` is a valid pointer by BoringSSL invariant. *out_len = len; } + task.take(); bssl_sys::ssl_private_key_result_t_ssl_private_key_success } PrivateKeyOperationResult::Pending => { bssl_sys::ssl_private_key_result_t_ssl_private_key_retry } PrivateKeyOperationResult::Error => { + task.take(); bssl_sys::ssl_private_key_result_t_ssl_private_key_failure } }