On Mon, Jun 08, 2009 at 02:10:29PM -0400, Wietse Venema wrote: > > /* qmgr_job_find - lookup job associated with named message and > > transport */ > > > > /* > > * Instead of traversing the message job list, we use single per > > * transport hash table. This is better (at least with respect to memory > > * usage) than having single hash table (usually almost empty) for each > > * message. > > */ > > return ((QMGR_JOB *) htable_find(transport->job_byname, > > message->queue_id)); > > Which makes it tempting to work around the collision by tweaking > the index that is used for job lookup. For example, use binhash(3) > with the memory address of the message data structure as index. > That might be an option for past releases.
Yes, that should do the trick. Mind you, the expected number of transports for a message is I think reasonably small. Why not just traverse the message job list (at most one job per-transport)? The cost of locating a hash slot, may be higher than chasing a couple of pointers and at most a few strcmp() calls, especially with a typical message having just one job (single recipient message). -- Viktor. Disclaimer: off-list followups get on-list replies or get ignored. Please do not ignore the "Reply-To" header. To unsubscribe from the postfix-users list, visit http://www.postfix.org/lists.html or click the link below: <mailto:majord...@postfix.org?body=unsubscribe%20postfix-users> If my response solves your problem, the best way to thank me is to not send an "it worked, thanks" follow-up. If you must respond, please put "It worked, thanks" in the "Subject" so I can delete these quickly.