On Mon, Jun 08, 2009 at 03:15:22PM -0400, Wietse Venema wrote:

> > Mind you, the expected number of transports for a message is I think
> > reasonably small. 
> 
> I see one hash table that is indexed by the queue ID, so this
> would involve one hash-table lookup per transport:

Not sure what "this" is referring to above.

> 
> for each transport
>   if (htable_find(transport->job_byname, queue_id)
>       skip this message as a duplicate.

Typically, the caller knows the transport, and is looking for the
corresponding job, so the there is no loop. I was suggesting
that the transport hash is not necessary, the job can be found via:

    for (job = message->job_list->next; job; job = job->peers.next)
        if (job->transport == transport)
            return job;

This way, there is no hash table at all, and performance is just fine,
because messages don't have a large number of jobs.

-- 
        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.

Reply via email to