mail_storage_service_user_free(&rcpt->service_user);
}
- if (client->state.raw_mail != NULL)
+ if (client->state.raw_mail != NULL) {
+ struct mailbox_transaction_context *raw_trans =
+ client->state.raw_mail->transaction;
+ struct mailbox *raw_box = client->state.raw_mail->box;
+
mail_free(&client->state.raw_mail);
- if (client->state.raw_trans != NULL)
- mailbox_transaction_rollback(&client->state.raw_trans);
- if (client->state.raw_box != NULL)
- mailbox_free(&client->state.raw_box);
+ mailbox_transaction_rollback(&raw_trans);
+ mailbox_free(&raw_box);
+ }
if (client->state.mail_data != NULL)
buffer_free(&client->state.mail_data);
struct ostream *mail_data_output;
const char *added_headers;
- struct mailbox *raw_box;
- struct mailbox_transaction_context *raw_trans;
struct mail *raw_mail;
struct mail_user *dest_user;
NULL
};
struct mailbox *box;
+ struct mailbox_transaction_context *trans;
struct mailbox_header_lookup_ctx *headers_ctx;
enum mail_error error;
return -1;
}
- client->state.raw_box = box;
- client->state.raw_trans = mailbox_transaction_begin(box, 0);
+ trans = mailbox_transaction_begin(box, 0);
headers_ctx = mailbox_header_lookup_init(box, wanted_headers);
- client->state.raw_mail = mail_alloc(client->state.raw_trans,
- 0, headers_ctx);
+ client->state.raw_mail = mail_alloc(trans, 0, headers_ctx);
mailbox_header_lookup_unref(&headers_ctx);
mail_set_seq(client->state.raw_mail, 1);
return 0;