ebackes(a)symas.com wrote:
> Full_Name: Emily Backes
> Version: 2.4.26
> OS: any
> URL:
> Submission from: (NULL) (75.244.124.114)
>
>
> If a client connects and writes, e.g. ADDs entries, then disconnects
> before seeing the result, the writes are stored in the database but do
> not increment contextCSN.
This is an obvious consequence of the fact that checks for abandoned ops are
performed before any response callbacks are invoked. The main op might have
completed but no overlay code will run, so syncprov never gets a chance to
update itself. (See result.c send_ldap_response())
The fix is less obvious. Probably we should only bypass the callbacks if
rs->sr_err == SLAPD_ABANDON, meaning that the operation itself was actually
aborted.
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
Full_Name: Hallvard B Furuseth
Version: 2.4.17-2.4.26
OS:
URL: http://groups.google.com/group/comp.lang.perl.misc/browse_thread/thread/151…
Submission from: (NULL) (193.71.61.60)
Submitted by: hallvard
back-perl initialization broken
PERL_SYS_INIT3() is called with wrong arguments. Introduced by ITS#5658.
Fixing it to do the same as the Perl main program, but I can not test it
on a system where these params are used so it is relevant - e.g. Windows.
- arg 3 (env) is NULL, but Perl:proto.h requires non-NULL.
Fixing to use PERL_SYS_INIT() instead.
That also affects Perl versions before 5.6. 5.6 introduced INIT3,
INIT is older. The alternative would be to pass &(char **environ) to
PERL_SYS_INIT3(), but who knows what Perl does with the environment.
Seems simpler to avoid it.
- PERL_SYS_INIT/INIT3() can change their arguments. back-perl
passed the changed argc but not the changed argv to perl_parse().
Fixing to pass both the changed argc and the changed argv.
- arg 2 is passed char *(*argv)[3]. Fixing to pass as a char ***argv:
char *embedding[] = { "", "-e", "0", NULL }, **argv = embedding;
char ***old = (char ***) &embedding, ***corrected = &argv;
'old' is how the address was passed, 'new' is how it should be passed.
'old' holds the address of the embedding array, but it should hold
the address of a variable which holds that address.
See comp.lang.perl.misc discussion "PERL_SYS_INIT()" from Oct 31 2011.