> I think that's better in this case.

This is done. Now:
- Only one of search_keys or filter parameters should be set. Setting both or 
neither results in
error.
- return_key parameter MUST be set. Failure to do so results in error.
- projection parameter is optional. If set, the result of the projection will 
be returned as
return_key.

> See "src/postconf/" for how this is handled for LDAP, ...

This was.. interesting. Done.

> You need to use a static variable to record whether you've already
> initialised the library, and do it just once. No need to worry about
> threads or locks. Postfix is single-threaded.

This is also done.

I see something that would need to be fixed. proxymap is terminated by signal 
11 on every postmap
call I make!! Will update here once that is fixed.
In the meantime, let me know if any other modifications are desired.

Regards
Hamid Maadani

June 16, 2022 5:48 PM, "Viktor Dukhovni" <postfix-us...@dukhovni.org> wrote:

> On Fri, Jun 17, 2022 at 12:39:30AM +0000, Hamid Maadani wrote:
> 
>> You need to read the mongodb documentation with care and make sure
>> that you honour their API contract. For example:
>> 
>> mongoc_init():
>> 
>> When it comes to 'mongoc_init' and 'mongoc_clean', they are supposed to be 
>> run once per process.
>> If I understand how postfix works correctly, it invokes 'dict_mongodb_open'
>> when it loads the shared-object for the dict (postfix-mongodb.so).
> 
> No, this is invoked once per mongodb table.
> 
>> I did not
>> Find an init function for the dict libraries, just the open method.
>> That would mean that mongoc_init would be run every time that library is
>> opened (which should be once for postmap and proxymap, unsure about postfix 
>> master).
> 
> You need to use a static variable to record whether you've already
> initialised the library, and do it just once. No need to worry about
> threads or locks. Postfix is single-threaded.
> 
>> Please let me know if my understanding is incorrect.
>> Would it be preferred to move this to postfix master process instead of a 
>> loadable
>> module? Even if the user does not want to use Mongo?
> 
> No. That can't work.
> 
>> I guess that's a difference in our way of thinking. Personally, it would be 
>> easier for me
>> this way, but if you see more value in failing in case both are specified, 
>> that's easy to
>> implement. Just let me know.
> 
> I think that's better in this case.
> 
>> Question about using variables in main.cf I'm getting 'unused
>> parameter' errors for my mongo variables, where I know I am using
>> them. Is there something I need to do in the module to mark a
>> variable as used while reading it from the config?
> 
> See "src/postconf/" for how this is handled for LDAP, ...
> 
>> Just Fyi, when compiling postfix, I keep running into <stdio.h> missing from
>> src/posttls-finger/posttls-finger.c
>> Adding the stdio header resolves the issue, easy fix.
> 
> Feel free to post a patch. I don't see this on FreeBSD or MacOS. What
> platform are you building on?
> 
> --
> Viktor.

Reply via email to