Skip to content

Commit eb50469

Browse files
committed
encrypt retry fix
1 parent 46213b6 commit eb50469

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/mongocrypt-ctx-rewrap-many-datakey.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,17 @@ static mongocrypt_kms_ctx_t *_next_kms_ctx_encrypt(mongocrypt_ctx_t *ctx) {
136136
mongocrypt_ctx_t *dkctx = NULL;
137137

138138
BSON_ASSERT_PARAM(ctx);
139+
/* Check if any need retry */
140+
{
141+
_mongocrypt_ctx_rmd_datakey_t *it = rmdctx->datakeys;
142+
while (it != NULL) {
143+
_mongocrypt_ctx_datakey_t *dkctx = (_mongocrypt_ctx_datakey_t *)it->dkctx;
144+
if (dkctx->kms.should_retry) {
145+
return &dkctx->kms;
146+
}
147+
it = it->next;
148+
}
149+
}
139150

140151
/* No more datakey contexts requiring KMS. */
141152
if (!rmdctx->datakeys_iter) {
@@ -166,6 +177,7 @@ static bool _add_new_datakey(mongocrypt_ctx_t *ctx, key_returned_t *key) {
166177
datakey->dkctx = mongocrypt_ctx_new(ctx->crypt);
167178
datakey->next = rmdctx->datakeys;
168179
datakey->doc = key->doc;
180+
// add KMS
169181
rmdctx->datakeys = datakey; /* Ownership transfer. */
170182

171183
/* Set new provider and master key (rewrapManyDataKeyOpts). */

0 commit comments

Comments
 (0)