]> git.sur5r.net Git - openldap/commitdiff
ITS#6792
authorQuanah Gibson-Mount <quanah@openldap.org>
Wed, 26 Jan 2011 19:09:24 +0000 (19:09 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Wed, 26 Jan 2011 19:09:24 +0000 (19:09 +0000)
CHANGES
servers/slapd/overlays/rwm.c

diff --git a/CHANGES b/CHANGES
index cf910c12970a5fc250f0d2c498df343c0231df4b..c18aca493312cbaeb65c70ce94cecf292bd69b37 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -95,6 +95,7 @@ OpenLDAP 2.4.24 Engineering
        Fixed slapo-rwm double free (ITS#6720)
        Fixed slapo-rwm crasher (ITS#6632)
        Fixed slapo-rwm entry handling (ITS#6760)
+       Fixed slapo-rwm response hang (ITS#6792)
        Fixed slapo-sssvlv initialization (ITS#6649)
        Fixed slapo-sssvlv to not advertise when unused (ITS#6647)
        Fixed slapo-sssvlv fix result code (ITS#6685)
index ae85c4872f4d96f005f11730dfeb2c4338bf1834..fd2cacada663fea9e5e439045b60c23418287cdb 100644 (file)
@@ -1158,7 +1158,7 @@ rwm_extended( Operation *op, SlapReply *rs )
        return SLAP_CB_CONTINUE;
 }
 
-static int
+static void
 rwm_matched( Operation *op, SlapReply *rs )
 {
        slap_overinst           *on = (slap_overinst *) op->o_bd->bd_info;
@@ -1170,7 +1170,7 @@ rwm_matched( Operation *op, SlapReply *rs )
        int                     rc;
 
        if ( rs->sr_matched == NULL ) {
-               return SLAP_CB_CONTINUE;
+               return;
        }
 
        dc.rwmap = rwmap;
@@ -1183,10 +1183,8 @@ rwm_matched( Operation *op, SlapReply *rs )
        if ( rc != LDAP_SUCCESS ) {
                rs->sr_err = rc;
                rs->sr_text = "Rewrite error";
-               return 1;
-       }
 
-       if ( mdn.bv_val != dn.bv_val ) {
+       } else if ( mdn.bv_val != dn.bv_val ) {
                if ( rs->sr_flags & REP_MATCHED_MUSTBEFREED ) {
                        ch_free( (void *)rs->sr_matched );
 
@@ -1195,8 +1193,6 @@ rwm_matched( Operation *op, SlapReply *rs )
                }
                rs->sr_matched = mdn.bv_val;
        }
-       
-       return SLAP_CB_CONTINUE;
 }
 
 static int
@@ -1764,20 +1760,18 @@ rwm_response( Operation *op, SlapReply *rs )
                        dc.rs = NULL; 
                        dc.ctx = "referralDN";
                        rc = rwm_referral_result_rewrite( &dc, rs->sr_ref );
+                       /* FIXME: impossible, so far */
                        if ( rc != LDAP_SUCCESS ) {
-                               rc = 1;
+                               rs->sr_err = rc;
                                break;
                        }
                }
-               rc = rwm_matched( op, rs );
-               break;
 
-       default:
-               rc = SLAP_CB_CONTINUE;
+               rwm_matched( op, rs );
                break;
        }
 
-       return rc;
+       return SLAP_CB_CONTINUE;
 }
 
 static int