void send_ldap_disconnect( Operation *op, SlapReply *rs ) { #define LDAP_UNSOLICITED_ERROR(e) \ ( (e) == LDAP_PROTOCOL_ERROR \ || (e) == LDAP_STRONG_AUTH_REQUIRED \ || (e) == LDAP_UNAVAILABLE ) assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) ); rs->sr_type = REP_EXTENDED; rs->sr_rspdata = NULL; Debug( LDAP_DEBUG_TRACE, "send_ldap_disconnect %d:%s\n", rs->sr_err, rs->sr_text ? rs->sr_text : "", NULL ); if ( op->o_protocol < LDAP_VERSION3 ) { rs->sr_rspoid = NULL; rs->sr_tag = slap_req2res( op->o_tag ); rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0; } else { rs->sr_rspoid = LDAP_NOTICE_DISCONNECT; rs->sr_tag = LDAP_RES_EXTENDED; rs->sr_msgid = LDAP_RES_UNSOLICITED; } if ( send_ldap_response( op, rs ) == SLAP_CB_CONTINUE ) { Statslog( LDAP_DEBUG_STATS, "%s DISCONNECT tag=%lu err=%d text=%s\n", op->o_log_prefix, rs->sr_tag, rs->sr_err, rs->sr_text ? rs->sr_text : "", 0 ); } }
void send_ldap_disconnect( Operation *op, SlapReply *rs ) { #define LDAP_UNSOLICITED_ERROR(e) \ ( (e) == LDAP_PROTOCOL_ERROR \ || (e) == LDAP_STRONG_AUTH_REQUIRED \ || (e) == LDAP_UNAVAILABLE ) Debug( LDAP_DEBUG_TRACE, "send_ldap_disconnect %d:%s\n", rs->sr_err, rs->sr_text ? rs->sr_text : "" ); assert( LDAP_UNSOLICITED_ERROR( rs->sr_err ) ); /* TODO: Flush the entry if sr_type == REP_SEARCH/REP_SEARCHREF? */ RS_ASSERT( !(rs->sr_flags & REP_ENTRY_MASK) ); rs->sr_flags &= ~REP_ENTRY_MASK; /* paranoia */ rs->sr_type = REP_EXTENDED; rs->sr_rspdata = NULL; if ( op->o_protocol < LDAP_VERSION3 ) { rs->sr_rspoid = NULL; rs->sr_tag = slap_req2res( op->o_tag ); rs->sr_msgid = (rs->sr_tag != LBER_SEQUENCE) ? op->o_msgid : 0; } else { rs->sr_rspoid = LDAP_NOTICE_DISCONNECT; rs->sr_tag = LDAP_RES_EXTENDED; rs->sr_msgid = LDAP_RES_UNSOLICITED; } if ( send_ldap_response( op, rs ) == SLAP_CB_CONTINUE ) { Statslog( LDAP_DEBUG_STATS, "%s DISCONNECT tag=%lu err=%d text=%s\n", op->o_log_prefix, rs->sr_tag, rs->sr_err, rs->sr_text ? rs->sr_text : "" ); } }