Hi list,
I've done some work on exim and would be glad if some people could test it.
The patch is at
http://perlgolf.de/exim-4.33-search_pool.patch
Changes are:
1.) exim now caches ALL lookups, not only the last per file/type
2.) a new store-pool was added, to manage all the lookup-caching more
efficiently, the used store is reset when search_tidyup is called.
3.) Some improvements to store_get/_reset were made, to reuse allocated
memory more efficiently (hopefully)
4.) string_copy/string_copy_malloc now use memcpy to copy the strings,
should be a bit more efficient than Ustrcpy
5.) expand_string_internal now preallocates the result-string(again, it
looks like this was dropped in 4.11, maybe for a reason, we'll see.
The current code should handle this well and should be able to
release most of the temporary used store.
6.) Small cleanup in OS/os.c-Linux, to suppress compiler warnings.
7.) Some smaller changed I can't fully remember :)
Because of 2. I had to change the way some of the lookup modules used
memory, there are NO store_malloc or string_copy_malloc calls anymore.
All needed memory will be retrieved from the search pool and reset when
search_tidyup is called. So there is no need to use malloc/free store
anymore (hopefully). I could not test the changes completly, because I
don't use all of them locally. So if anyone has time, please test it.
I've tested it as far as I could for some hours now, and it looks good.
The code now uses much less calls to malloc/free than before.
So, happy testing, feedback and debuglogs are welcome.
Nico
P.S. The patch can used together with exiscan-acl 4.33-20 ;)