Author: nhosoi
Update of /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv23432/back-ldbm
Modified Files:
Tag: Directory71RtmBranch
import-threads.c import.c import.h
Log Message:
[175063] entry with escaped characters fails to import and index
Index: import-threads.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/import-threads.c,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -u -r1.8 -r1.8.2.1
--- import-threads.c 28 Apr 2005 17:31:54 -0000 1.8
+++ import-threads.c 20 Feb 2006 18:14:50 -0000 1.8.2.1
@@ -986,6 +986,7 @@
int ret = 0;
struct attrinfo *parentid_ai;
Slapi_PBlock *pb = slapi_pblock_new();
+ int shift = 0;
PR_ASSERT(info != NULL);
PR_ASSERT(inst != NULL);
@@ -1027,10 +1028,11 @@
info->state = RUNNING;
/* Read that entry from the cache */
- fi = import_fifo_fetch(job, id, 0);
+ fi = import_fifo_fetch(job, id, 0, shift);
if (! fi) {
- import_log_notice(job, "ERROR: foreman fifo error");
- goto error;
+ import_log_notice(job, "WARNING: entry id %d is missing");
+ shift++;
+ continue;
}
/* first, fill in any operational attributes */
@@ -1268,7 +1270,7 @@
info->state = RUNNING;
/* Read that entry from the cache */
- fi = import_fifo_fetch(job, id, 1);
+ fi = import_fifo_fetch(job, id, 1, 0);
ep = fi ? fi->entry : NULL;
if (!ep) {
/* skipping an entry that turned out to be bad */
Index: import.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/import.c,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -u -r1.5 -r1.5.2.1
--- import.c 19 Apr 2005 22:07:38 -0000 1.5
+++ import.c 20 Feb 2006 18:14:50 -0000 1.5.2.1
@@ -91,7 +91,7 @@
return 0;
}
-FifoItem *import_fifo_fetch(ImportJob *job, ID id, int worker)
+FifoItem *import_fifo_fetch(ImportJob *job, ID id, int worker, int shift)
{
int idx = id % job->fifo.size;
FifoItem *fi;
@@ -102,7 +102,7 @@
return NULL;
}
if (fi->entry) {
- if (id != fi->entry->ep_id)
+ if (id != fi->entry->ep_id - shift)
fi = NULL;
else if (worker) {
if (fi->bad) return NULL;
Index: import.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/import.h,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- import.h 19 Apr 2005 22:07:38 -0000 1.4
+++ import.h 20 Feb 2006 18:14:50 -0000 1.4.2.1
@@ -201,7 +201,7 @@
/* import.c */
-FifoItem *import_fifo_fetch(ImportJob *job, ID id, int worker);
+FifoItem *import_fifo_fetch(ImportJob *job, ID id, int worker, int shift);
void import_free_job(ImportJob *job);
void import_log_notice(ImportJob *job, char *format, ...);
void import_abort_all(ImportJob *job, int wait_for_them);
Show replies by date