Hi everyone.....
I Build a plugin to concat my body and header splited....
Its have 2 "versions".
One is with the body without modifications.
The second, is with the body with crypto, and this crypto increase a little the size of email.
So, without crypto, works fine, but with crypto i got stuck in some modifications.
Because the email is splited, to handle it, i made a copy from istream-concat.c, and in i_stream_concat_read i made this changes.
Every place that have the i_stream_get_data i get the index from concat (if is the frist or second stream) and if is the second, (my body) the unsigned char *data is the return from my function.
if(cstream->cur_idx == 1){
data = decrypt_data(cstream->cur_input, &data_size);
}else{
data = i_stream_get_data(cstream->cur_input, &data_size);
}
In this part, i get the function i_stream_get_data and put in the function too, to get the data in the same way, but i dont return the (_stream->buffer
- _stream->skip;), i put this in a unsigned char * too, and work with this variable.
The size_r, with the _stream->pos - _stream->skip, i update it, with the new value get from my total length from the decrypted buffer.
In resume, every (inside istream_concat_read and istream_concat_read_next )
i_stream_get_data(cstream->cur_input, &data_size); // (in
istream_concat_read is "pos" variable)
I change to
if(cstream->cur_idx == 1){
data = decrypt_data(cstream->cur_input, &data_size); //(in
istream_concat_read is "pos" variable) }else{ data = i_stream_get_data(cstream->cur_input, &data_size); //(in istream_concat_read is "pos" variable) }
Setting the unsigned char *data, with my decrypted data and the pos or data_size, with the length of buffer data , decrypted.
I Think there is Ok with this, and must be work, but i got some errors with this, when the Email is read to get them, the total length read is diferent from the W flag in header name.
FETCH [] for mailbox INBOX UID 2 got too little data: 1351 vs 1352 FETCH [] for mailbox INBOX UID 1 got too little data: 1357 vs 1360 FETCH [] for mailbox INBOX UID 3 got too little data: 691 vs 1303
There is some variable or something that i forgot to update with this news values ? I use the Zlib plugin for exemple to do this.
Tks Guys !!!
participants (1)
-
Alex Baule