Tks timo ! I will see the plugin to do like it! Em 12/02/2012 13:46, "Timo Sirainen" <t...@iki.fi> escreveu:
> Hi, > > Yeah, you shouldn't do the erasing directly in expunge(), because it may > still be aborted. Do it in sync_notify() like quota plugin does. > > On 12.2.2012, at 16.52, Alex Baule wrote: > > > I want to know because i have header and body splited. To erase the > > body, i must have shure, that header was expunged. Some tests that i > > made, the client call expunge, but i don't know why (there is notting > > in mail log) the header was not expunged, nut my body was, because i > > call it before expunge the header. something like this. > > > > if (found_body){ > > erase_body(); > > super.expunge(_mail); > > } > > > > Because that expunge that no happen, (the client call, but the email > > was not expunged) i think to do like this way: > > > > if (found_body){ > > super.expunge(_mail); > > if(_mail was expunged){ > > erase_body(); > > } > > } > > > > TKs Timo ! > > > > Em 12 de fevereiro de 2012 02:19, Timo Sirainen <t...@iki.fi> escreveu: > >> On 10.2.2012, at 19.39, Alex Baule wrote: > >> > >>> Hy Everyone...and Timo ! > >>> > >>> There is a way to know if a email was expunged (deleted from hard > >>> disk) inside a plugin ? I rewrite the expunge function, but the real > >>> expunge function is void, i can't know if was really expunged. > >>> > >>> There is a way to know this ? > >> > >> It's not known until transaction_commit() what messages are expunged. > What do you need to know this for? There are a few different ways. > >> > >> If you simply need one of the sessions to definitely know that it > expunged a message, you can do it like quota plugin does. (So even if there > are multiple clients doing EXPUNGE at the same time, quota is never > decreased more than once per mail.) See quota-storage.c and most > importantly quota_mailbox_sync_notify(). > >> > >> Quota code also shows the other method of doing it: keep track of what > mail_expunge()s have been called, and then in transaction commit check if > it succeeds and if it does do what you want to do. > >> > > > >