Mercurial > dovecot > core-2.2
diff src/plugins/mail-crypt/doveadm-mail-crypt.c @ 21244:d732ab1b584c
doveadm-mail-crypt: Skip existing keys properly
When generating new keypairs, handle existing keys
correctly when skipping them.
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Mon, 28 Nov 2016 15:15:21 +0200 |
parents | fa9a9c236232 |
children | e0d156644fbe |
line wrap: on
line diff
--- a/src/plugins/mail-crypt/doveadm-mail-crypt.c Mon Nov 28 14:52:50 2016 +0200 +++ b/src/plugins/mail-crypt/doveadm-mail-crypt.c Mon Nov 28 15:15:21 2016 +0200 @@ -245,7 +245,12 @@ if ((ret = mail_crypt_box_get_public_key(t, &pair.pub, error_r)) < 0) { ret = -1; } else if (ret == 1 && (!ctx->force || ctx->recrypt_box_keys)) { - /* do nothing */ + /* do nothing, because force isn't being used *OR* + we are recrypting box keys and force refers to + user keypair. + + FIXME: this could be less confusing altogether */ + ret = 0; } else { if ((ret = mail_crypt_box_generate_keypair(box, &pair, user_key, pubid_r, error_r)) < 0) { @@ -370,7 +375,10 @@ res->name = p_strdup(_ctx->pool, info->vname); res->success = FALSE; res->error = p_strdup(_ctx->pool, error); - } else if (ret >= 0) { + } else if (ret == 0) { + /* nothing happened because key already existed and + force wasn't used, skip */ + } else if (ret > 0) { res = array_append_space(result); res->name = p_strdup(_ctx->pool, info->vname); res->success = TRUE;