]> git.sur5r.net Git - openldap/commitdiff
Fix LDAP Intermediate Response tag values.
authorKurt Zeilenga <kurt@openldap.org>
Wed, 20 Oct 2004 21:47:40 +0000 (21:47 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 20 Oct 2004 21:47:40 +0000 (21:47 +0000)
with code to accept old values.

include/ldap.h
libraries/libldap/extended.c
servers/slapd/result.c

index 99ed1fc0113e87c0a87c274a475c5748f455b536..b7cb33777d80d6c5618848f23a92e2498d9eaee2 100644 (file)
@@ -356,6 +356,9 @@ typedef struct ldapcontrol {
 #define LDAP_TAG_EXOP_RES_OID   ((ber_tag_t) 0x8aU)    /* context specific + primitive */
 #define LDAP_TAG_EXOP_RES_VALUE ((ber_tag_t) 0x8bU)    /* context specific + primitive */
 
+#define LDAP_TAG_IM_RES_OID   ((ber_tag_t) 0x80U)      /* context specific + primitive */
+#define LDAP_TAG_IM_RES_VALUE ((ber_tag_t) 0x81U)      /* context specific + primitive */
+
 #define LDAP_TAG_SASL_RES_CREDS        ((ber_tag_t) 0x87U)     /* context specific + primitive */
 
 /* LDAP Request Messages */
index 10726c179ab351e65372f37bd541e62422a8991c..c6a5b8753ab3b5dede93c5419add5470f68884e4 100644 (file)
@@ -337,7 +337,7 @@ ldap_parse_intermediate (
 
        tag = ber_peek_tag( ber, &len );
 
-       if( tag == LDAP_TAG_EXOP_RES_OID ) {
+       if( tag == LDAP_TAG_IM_RES_OID || tag == LDAP_TAG_EXOP_RES_OID ) {
                /* we have a resoid */
                if( ber_scanf( ber, "a", &resoid ) == LBER_ERROR ) {
                        ld->ld_errno = LDAP_DECODING_ERROR;
@@ -348,7 +348,7 @@ ldap_parse_intermediate (
                tag = ber_peek_tag( ber, &len );
        }
 
-       if( tag == LDAP_TAG_EXOP_RES_VALUE ) {
+       if( tag == LDAP_TAG_IM_RES_VALUE || tag == LDAP_TAG_EXOP_RES_VALUE ) {
                /* we have a resdata */
                if( ber_scanf( ber, "O", &resdata ) == LBER_ERROR ) {
                        ld->ld_errno = LDAP_DECODING_ERROR;
index fe2f6e0c2f5384b601850964193395f226085577..f2ef04cb35665bb4b38ae7d2ba9970c9d2f81278 100644 (file)
@@ -381,11 +381,15 @@ send_ldap_response(
        {
                if ( rs->sr_rspoid != NULL ) {
                        rc = ber_printf( ber, "ts",
-                               LDAP_TAG_EXOP_RES_OID, rs->sr_rspoid );
+                               rs->sr_type == REP_EXTENDED
+                                       ? LDAP_TAG_EXOP_RES_OID : LDAP_TAG_IM_RES_OID,
+                               rs->sr_rspoid );
                }
                if( rc != -1 && rs->sr_rspdata != NULL ) {
                        rc = ber_printf( ber, "tO",
-                               LDAP_TAG_EXOP_RES_VALUE, rs->sr_rspdata );
+                               rs->sr_type == REP_EXTENDED
+                                       ? LDAP_TAG_EXOP_RES_VALUE : LDAP_TAG_IM_RES_VALUE,
+                               rs->sr_rspdata );
                }
        }