Vsevolod Stakhov [Sun, 26 Oct 2008 04:14:48 +0000 (07:14 +0300)]
* Add determining page size function to mem_pool library
* Add simple statistic structure that is placed in shared memory and used for gathering server's stats
Vsevolod Stakhov [Fri, 24 Oct 2008 15:32:39 +0000 (19:32 +0400)]
* Stylify and fix util functions that was gathered from libutil code (memory allocation)
* Fix protocol and network functions
* Fix some memory allocation issues
Vsevolod Stakhov [Thu, 16 Oct 2008 15:41:45 +0000 (19:41 +0400)]
* Add support of shared memory chunks to memory pool allocator. Also add locking support (spin mutexes)
* Add simple test case for shared memory allocation
* Configure modules when worker starts for simplifying reconfig procedure
* Add two behaviour types of memory allocator: greedy and ungreedy
* Adopt surbl module for new configure style
* Implement destructors stack in memory pool, so there is now
convinient way to free objects in pool that was allocated by other
memory allocation mechanics (e.g. GObject).
Destructors must be added in pool manually by calling memory_pool_add_destructor
function.
* Implement expression parser (convertor to inverse polish record)
* Improve configure system by implementing dependencies
* Add .depend files for subdirs that requre it
* Write simple test for expressions parser
* Rework config file memory allocation to separate memory pool for easy reloading
without calling of ~1000 free syscalls
* Add memory_pool_alloc0 for initializing newly allocated space in pool with zeroes
* Small updates to memory pool library
- fix cases when new chunk is allocated
- add memory pool allocator statistics
- let it work in multi-threaded environment
- add strdup function for convinience
* Use memory pool allocator more widely to avoid memory leaks in future and optimize performance
* Task pool chunk size is now pre-defined constant (16 Kb currently)
* Place all protocol logic in separate file
- simplify protocol parsing logic
- add compatibility with sa-spamd
- TODO: add protocol output for all commands
* Add memory pool support.
- memory pools would be used in modules for allocating task specific data without freeing it separately
- memory pools growth is implemented as multiplying by 2 its length (for avoiding multiply reallocs)
- when memory pool is freed all data that was allocated from this pool is freed too
Vsevolod Stakhov [Thu, 21 Aug 2008 13:58:30 +0000 (17:58 +0400)]
* Add filters logic
* Perl should use separate memcached context for its operations (just do memcpy with the same socket)
TODO: add block mechanics here to avoid memcached connection closing before perl operation is finished
* Change logic of perl chain filter
Vsevolod Stakhov [Wed, 20 Aug 2008 13:09:13 +0000 (17:09 +0400)]
* Rewrite perl module for new XS, now perl filters got only object of rspamd module that provides access to every part of message
* Add memcached access api for perl
* Reorganize Makefile, add .PHONY targets
* Fix memcached module as now we cannot write or read several keys in async mode
Vsevolod Stakhov [Thu, 19 Jun 2008 14:55:56 +0000 (18:55 +0400)]
* Rewrite memcached library to work with events (async model)
* Add simple test for new memcached library
* Use glib variants of malloc and free functions in rspamd