On Oct 17, 2008, at 12:49 PM, Jason Vas Dias wrote:

So it seems the Net::LDAP issue (very minor bug) is that in case 1 above,

No, it is not a bug.

Net::LDAP gets this response:

"
LDAP::process
Net::LDAP=HASH(0xca22c0) received:23 bytes

30 15 02 01 02 69 10 0A 01 20 04 09 6F 3D 61 74 0....i... ..o=at
74 2E 63 6F 6D 04 00 __ __ __ __ __ __ __ __ __ t.com..

0000   21: SEQUENCE {
0002    1:   INTEGER = 2
0005   16:   [APPLICATION 9] {
0007    1:     ENUM = 32
000A    9:     STRING = 'o=att.com'
0015    0:     STRING = ''
0017     :   }
0017     : }

That is what your server returned.

And Net::LDAP returns an error status mesg with "resultCode=>32" for the case #1 add() ;
$VAR1 = bless( {
                'parent' => bless( {
                                     'net_ldap_version' => 3,
                                     'net_ldap_scheme' => 'ldap',
                                     'net_ldap_debug' => 1,
'net_ldap_socket' => bless( \*Symbol::GEN1, 'IO::Socket::INET' ), 'net_ldap_onerror' => sub { "DUMMY" },
                                     'net_ldap_host' => 'localhost',
                                     'net_ldap_uri' => 'localhost',
                                     'net_ldap_resp' => {},
                                     'net_ldap_mesg' => {},
                                     'net_ldap_async' => 0,
                                     'net_ldap_port' => '389',
                                     'net_ldap_refcnt' => 1
                                   }, 'Net::LDAP' ),
                'errorMessage' => '',
                'ctrl_hash' => undef,
                'resultCode' => 32,
                'callback' => undef,
                'mesgid' => 2,
                'matchedDN' => 'o=att.com',
                'controls' => undef,
                'raw' => undef
              }, 'Net::LDAP::Add' );

but I think it should also be returning an "errorMessage=>'no such object'" in this case,

Why are you looking inside the object ??

Use the methods as defined in the documentation and you will get the error message you want.

whereas it returned an empty string in errorMessage - an error string would have greatly
helped in diagnosing the problem and correcting my mistake.

Tell you LDAP server vendor as that is the source of that attribute. Net::LDAP works around this issue if you call the methods as defined in the documentation

Graham.

Reply via email to