[Botan-devel] clearing pipe messages

Jack Lloyd lloyd at randombit.net
Tue Dec 13 16:20:31 EST 2005


Hi Muzaffar,

Reading the previous message out removes it from memory (reading is
destructive; Pipe doesn't keep a copy), so this shouldn't be a problem. There
is still a small overhead, the empty SecureQueue* object, but that should be on
the order of three pointers per message.

My first inclination would be that the right way to go about dealing with this
overhead, if it's actually a problem, is to delete/NULL out empty SecureQueue
objects stored in this->messages and then (re-)initialize them lazily. This
would be a lot cleaner, and would not require any explicit actions on the part
of the user.

Are you seeing substantially more overhead in your application than the above
would suggest? If so, could you please post a testcase for me to poke at?

Thanks,
  Jack

On Tue, Dec 13, 2005 at 03:50:22PM +0500, Muzaffar Mahkamov wrote:
> Hi,
> 
> Is it possible to clear all the messages of Pipe and reuse it several
> times? I need to encrypt/decrypt large amounts of data in small chunks
> and constructing Pipe with calling get_cipher with lookups each time
> is a pretty expensive operation.
> 
> set_default_msg() is inacceptable for this case since it does not
> remove the previous messages and doesn't free the memory.
> 
> I want to modify the Pipe class by adding the following function:
> 
> void Pipe::clear_messages()
>    {
>    if(locked)
>       throw Invalid_State("Pipe cannot be modified while it is locked");
> 
>    for(u32bit j = 0; j != messages.size(); j++)
>       delete messages[j];
>    }
> 
>    locked = false;
>    }
> 
> Would it be sufficient for reusing the pipe or there are some internal
> states/flags that also must be cleared?
> 
> Thanks in advance,
> Muzaffar
> 
> _______________________________________________
> botan-devel mailing list
> botan-devel at randombit.net
> http://www.randombit.net/mailman/listinfo/botan-devel



More information about the botan-devel mailing list