On 19 Jul 2011, at 16:17, Rick Sanders wrote: > I am trying to capture a better error description than I am getting with the > following code: > > use Net::LDAP::Util qw(ldap_error_name ldap_error_text ldap_error_desc); > > $result = $ldap->add( $dn, attr => [ %$attrs ] ); > if ( $result->code ) { > $error = $result->code; > $errtxt = ldap_error_name( $result->code ); > Log(" ERROR adding $dn: $errtxt"); > $errtxt = ldap_error_text( $result->code ); > Log(" ERROR adding $dn: $errtxt"); > $errtxt = ldap_error_desc( $result->code ); > Log(" ERROR adding $dn: $errtxt"); > } > > That gives me the following: > > ERROR adding mail=MILLENNIUMTENS,o=site: LDAP_INVALID_SYNTAX > ERROR adding mail=MILLENNIUMTENS,o=site: Some part of the request > contained an invalid syntax. It could be a search with an invalid filter or a > request to modify the schema and the given schema has a bad syntax. > ERROR adding mail=MILLENNIUMTENS,o=site: Invalid syntax > > If I set $ldap->debug(12) then a ton of info is written to STDERR that > contains the details I need (showing the value that caused the error). > > Net::LDAP=HASH(0x2993f4) received: > 0000 30 86: SEQUENCE { > 0002 02 1: INTEGER = 5 > 0005 69 81: [APPLICATION 9] { > 0007 0A 1: ENUM = 21 > 000A 04 0: STRING = '' > 000C 04 74: STRING = 'Bad SMTP Address; not canonical form, > Attribute=mail, Value=MILLENNIUMTENS' > 0058 : } > 0058 : } > > Is there a way in NET::LDAP to grab that error string other than redirecting > STDERR and parsing it? "LDAP_INVALID_SYNTAX" is not particularly helpful in > diagnosing why the syntax was invalid.
Use $result->error_text() to get that text. See the Net::LDAP::Message documentation... Note that servers may not return anything helpful to you in that field. The LDAP RFCs tell you not to rely on its contents. Chris