Closed Bug 11114 Opened 25 years ago Closed 25 years ago

Issues with setValue()

Categories

(Directory :: PerLDAP, defect, P3)

defect

Tracking

(Not tracked)

VERIFIED DUPLICATE of bug 7131

People

(Reporter: leif, Assigned: leif)

Details

Attachments

(2 files)

G'day Leif,

I posted an item to netscape.public.mozilla.directory re perldap1.2.2 but got
no response so I've decided to go to the source.

I'm doing a Directory/Messaging implementation at the University of
Technology, Sydney (UTS) and PerLDAP is kinda important for syncing the
various data sources into the directory.

I've created the concept of a 'set' flag in addition to your 'modified' and
'deleted' flags.
I've gone ahead and resolved the issues below but haven't put the mods thru
exhaustive testing. In Conn.pm:update() I didn't understand your use of $[
and so I didn't make too many changes.

Pls find attached Conn.pm and Entry.pm hoping they will be of some use to
you.


The problems I had with perldap1.2.2 were as follows, from the original post:

----------------
perldap1.2 was giving me segmentation faults and bus errors so I've
just installed perldap1.2.2 on
SunOS directory 5.6 Generic_105181-14 sun4u sparc SUNW,Ultra-250,
ldapsdk-3.0. The segmentation faults and bus errors have gone away
but now I've encountered the following problems:

1. Warning "Reference found where even-sized list expected at
/opt/local/lib/perl5/site_perl/5.005/sun4-solaris/Mozilla/LDAP/Conn.pm
line 138, <INFILE> chunk 31036.
   my %entry = {};
should probably read
   my %entry = ();

2. setValue() on an attribute which exists in the schema but which
doesn't exist
in the entry just searched doesn't add it to _oc_order_ and hence
printLDIF()
and update() don't see it, hence it doesn't get updated.

I couldn't see why nextEntry() couldn't create an ::Entry object and
hence use
the STORE method to set all the tracking values. It made sense to me
that an
entry just 'searched' was really no different to an entry just created
with newEntry
except that the _modified_ flags should be deleted, and that only STORE
should
worry about such things as _oc_order_ etc..

After making such tweaks all went well until the bus errors returned. I
traced them
into ldap_modify_s, at which point I gave up and backed-out the changes.

3. Funny behaviour on update() when dealing with multi-occuring values
    of an attribute. eg. using setValue() to set multiple values I
expected the
    modify operation to be "rb", i.e. replace, instead I get "ab" and
then an
    ldap error 20, as follows:

   $entry->setValue('faculty', @{$student->{'faculty'}});

   with $main::LDAP_DEBUG=1 the debug output is

Working on faculty
        Doing operation: ab
                Engineering
                Vice Chancellor

then getErrorCode() == 20 and printError() outputs
"LDAP error: Type or value exists"
--------------



regards, taras

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"And the note said: 'Requires Win95, NT4.0 or better.'
 So I installed FreeBSD." - common sense

Taras M. Dowhaluk
Director - Technical Operations
VisionDB Pty Ltd
Sydney, Australia
email: tarasd@visiondb.com.au
www:   http://www.visiondb.com.au
voice: 0412 281 323
fax:   +61 2 9894 4718
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Attached file Entry.pm
Attached file Conn.pm
Status: NEW → ASSIGNED
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
#1 and #2 are fixed, and #3 is a duplicate of 7131.

*** This bug has been marked as a duplicate of 7131 ***
cleaning up: VERIFY duplicate
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: