]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/result.c
Fix ITS#3424
[openldap] / servers / slapd / result.c
index fe2f6e0c2f5384b601850964193395f226085577..9a05fb06a52f39a7fe1e65a7e663f223b77c2c65 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 );
                }
        }
 
@@ -1506,7 +1510,7 @@ int slap_read_controls(
                *ctrl = (LDAPControl *) slap_sl_calloc( 1, sizeof(LDAPControl), NULL );
        } else {
                /* retry: free previous try */
-               slap_sl_free( (*ctrl)->ldctl_value.bv_val, &op->o_tmpmemctx );
+               slap_sl_free( (*ctrl)->ldctl_value.bv_val, op->o_tmpmemctx );
        }
 
        **ctrl = c;