Hi, I think that I have found another bug in the MX synchronisation code. The code checks that a peer is not the local server (function local_addr() in sync.c) but the result of this test is only used in sync_sender(). I think that this should be tested in sync_queue() as well. With the current code, sync_queue() adds pendings records to the list, even if the peer is local and sync_sender() does not send the records and does not clear the list. Thus, the list grows as pending records are added and an overflow occurs, e.g: ... Dec 5 20:34:15 soleil milter-greylist: peer 193.51.24.1 queue overflow (1024 entries), discarding new entry Dec 5 20:34:15 soleil milter-greylist: peer 193.51.24.1 queue overflow (1024 entries), discarding new entry Dec 5 20:34:16 soleil milter-greylist: peer 193.51.24.1 queue overflow (1024 entries), discarding new entry Dec 5 20:34:19 soleil milter-greylist: peer 193.51.24.1 queue overflow (1024 entries), discarding new entry ... I suggest to add a test at the beginning of sync_queue(): if (peer->p_flags & P_LOCAL) return; This will prevent milter-greylist from queuing records to a local peer. And, BTW, this will fix a memory leak in milter-greylist (pending records that are added to the local peer list are never deallocated since their reference count will never be decremented). Comments, anyone? Cheers R\ufffdmy
Message
Another MX sync bug
2004-12-05 by Remy Card
Attachments
- No local attachments were found for this message.