https://bugs.openldap.org/show_bug.cgi?id=9812

          Issue ID: 9812
           Summary: Registered SLAPI plugin functions are not called
           Product: OpenLDAP
           Version: 2.6.1
          Hardware: x86_64
                OS: Linux
            Status: UNCONFIRMED
          Keywords: needs_review
          Severity: normal
          Priority: ---
         Component: slapd
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

We're running since ages with an OpenLDAP server 2.4.40 a plugin which
publishes
changes (add, modify, delete) in LDAP to an Identity Server (IDM). We compile
on SuSE Linux from source. The configure options for 2.6.1 are:

./configure --enable-aci=yes --enable-dynacl --enable-spasswd=yes
--enable-crypt=yes --enable-debug=yes --enable-shared=yes --enable-modules=yes
--enable-slapi --enable-slapd=yes --with-tls --prefix=/opt/openldap-2.6.1

Our SLAPI plugin, written in C works fine for 2.4.40 and stopped working for
2.6.1. It is configured in slapd.conf as

plugin postoperation /opt/openldap-2.6.1/lib64/idm.so idm_init "IDM Plugin"
10.23.33.52 3001

The function idm_init() registers static C functions the supposed way:

int idm_init(Slapi_PBlock * pb)
{
    int rc = LDAP_SUCCESS;

    log("idm-plugin:","now in idm_init()\n");
    // first call, create new list and register the functions
    ...
            rc |=
            slapi_pblock_set( /* Plug-in API version */ pb,
                             SLAPI_PLUGIN_VERSION,
                             SLAPI_PLUGIN_CURRENT_VERSION);
        rc |=
            slapi_pblock_set( /* Plug-in description */ pb,
                             SLAPI_PLUGIN_DESCRIPTION, (void *) &desc);
        rc |=
            slapi_pblock_set( /* Modify function */ pb,
                             SLAPI_PLUGIN_POST_MODIFY_FN,
                             (void *) modify_user);
    ...
    // read arguments and add list entry
    rc |= read_arguments(pb);

    log("idm-plugin", "idm_init() return rc:%d\n", rc);
    return rc;
}

The begin of the function for modify_user() looks like this:

static int modify_user(Slapi_PBlock * pb)
{
    Slapi_Entry *entry;
    log("idm-plugin:", "now in modify_user\n");
    if (slapi_pblock_get(pb, SLAPI_SEARCH_TARGET, &entry) != LDAP_SUCCESS) {
        log("IDM-Connector Plugin",
            "entry modified, but couldn't get entry");
        return -1;
    }
...

But the function gets never called from slapd on changes in LDAP. The log shows
only the registering:

03/16/22 10:52:26 idm-plugin:: now in idm_init()
03/16/22 10:52:26 IDM-Connector Plugin: idm_init: Initializing plugin
03/16/22 10:52:26 idm-plugin:: now in read_arguments()
03/16/22 10:52:26 IDM Plugin: added idm connector: ip=10.23.33.52, port=3001
03/16/22 10:52:26 idm-plugin: idm_init() returns rc:0
03/16/22 10:52:26 plugin_pblock_new: Registered plugin
OCLC-IDM-Connector-Notifier 1.0 [OCLC.org] (Notify the OCLC IDM-Connector of
changes)

As I said, with OpenLDAP 2.4.40 this works fine. It does not work anymore with
2.6.1.

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to