From: <svn...@op...> - 2009-03-30 20:13:50
|
Author: scriptor Date: Mon Mar 30 22:13:38 2009 New Revision: 5472 URL: http://www.opensync.org/changeset/5472 Log: ldap_plugin_check_anchor_system() MUST NOT be called from inside the get_changes function. It MUST be called from inside the connect function, instead. Otherwise: SIGSEGV in osync_context_report_slowsync(). Modified: plugins/ldap-sync/src/ldap_connect.c plugins/ldap-sync/src/ldap_plugin.c Modified: plugins/ldap-sync/src/ldap_connect.c ============================================================================== --- plugins/ldap-sync/src/ldap_connect.c Mon Mar 30 20:31:44 2009 (r5471) +++ plugins/ldap-sync/src/ldap_connect.c Mon Mar 30 22:13:38 2009 (r5472) @@ -431,6 +431,14 @@ } + + // Anchor system + ldap_plugin_check_anchor_system(ctx, sinkenv, &error); + + + + + // Set LDAP version on created connection ldap_plugin_set_ldap_protocol(ctx, info, sinkenv, &error); Modified: plugins/ldap-sync/src/ldap_plugin.c ============================================================================== --- plugins/ldap-sync/src/ldap_plugin.c Mon Mar 30 20:31:44 2009 (r5471) +++ plugins/ldap-sync/src/ldap_plugin.c Mon Mar 30 22:13:38 2009 (r5472) @@ -389,6 +389,11 @@ osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, ctx, sinkenv, error); + if (ctx == NULL) { + osync_error_set(error, OSYNC_ERROR_GENERIC, "%s:%i: ERROR: ctx = NULL.\n", __FILE__, __LINE__); + goto error; + } + if (sinkenv == NULL) { osync_error_set(error, OSYNC_ERROR_GENERIC, "%s:%i: ERROR: sinkenv = NULL.\n", __FILE__, __LINE__); goto error; @@ -2144,6 +2149,8 @@ /** * @brief Tries to get to know what has changed on the LDAP server * + * @sa http://localhost/libopensync-svn/group__OSyncObjTypeSinkAPI.html + * * @param sink From this the object type specific environment can be * gained. * @param info Environment for the whole plugin @@ -2247,7 +2254,7 @@ // Anchor system - ldap_plugin_check_anchor_system(ctx, sinkenv, &error); + // ldap_plugin_check_anchor_system(ctx, sinkenv, &error); // Now you can get the changes. These are the changes from the LDAP server. @@ -4385,6 +4392,14 @@ } + sinkenv->sink = osync_plugin_info_find_objtype(info, objtype); + if (!sinkenv->sink) { + osync_trace(TRACE_INTERNAL, "%s:%i: INFO: No sink available for objtype \"%s\". Apparently, this objtype has been disabled by configuration.\n", __FILE__, __LINE__, objtype); + goto out; + } + + + /* Every sink CAN have different functions ... */ osync_objtype_sink_set_connect_func(sinkenv->sink, ldap_plugin_connect); osync_objtype_sink_set_disconnect_func(sinkenv->sink, ldap_plugin_disconnect); @@ -4392,16 +4407,11 @@ osync_objtype_sink_set_commit_func(sinkenv->sink, ldap_plugin_commit_change); osync_objtype_sink_set_sync_done_func(sinkenv->sink, ldap_plugin_sync_done); - sinkenv->sink = osync_plugin_info_find_objtype(info, objtype); - if (!sinkenv->sink) { - osync_trace(TRACE_INTERNAL, "%s:%i: INFO: No sink available for objtype \"%s\". Apparently, this objtype has been disabled by configuration.\n", __FILE__, __LINE__, objtype); - goto out; - } if (!osync_objtype_sink_is_enabled(sinkenv->sink)) { - osync_trace(TRACE_INTERNAL, "%s:%i: INFO: sink for objtype \"%s\" is NOT enabled.", __FILE__, __LINE__, osync_objtype_sink_get_name(sinkenv->sink)); - goto out; - } + osync_trace(TRACE_INTERNAL, "%s:%i: INFO: sink for objtype \"%s\" is NOT enabled.", __FILE__, __LINE__, osync_objtype_sink_get_name(sinkenv->sink)); + goto out; + } |