mirror of
https://github.com/mailscope/kumomta.git
synced 2026-09-10 04:22:13 +00:00
This commit tidies up a bit of an API wart that stems from the initial implementation where we couldn't guarantee that the message crate would know how to get a spool handle to implicitly load data when needed. This has resulted in a couple of issues over time where we try to operate on the message data and it just hasn't been loaded, leading to transient errors being raised in the best case, but in a possible worst case, a silent error condition. During the rebind_message event, if the message is not loaded, msg:get_data() could return the placeholder empty data value. If the rebind_message event is trying to mutate the message then the best case is that an error is raised, a medium-bad case is that operations like `msg:append_header` will fail to find the header block and thus fail, and the worst case is that mutation operations that blinding prepend data (perhaps msg:prepend_header) could end up assigning a bogus truncated message. While we don't generally recommend this sort of action, this is potentially a very gnarly consequence of trying things out. Let's just head all of these sorts of issues off by making the accessors async and have them internally load the data as required.