]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPModDNRequest.cpp
Entry rwlock is no longer needed as concurrency is managed
[openldap] / contrib / ldapc++ / src / LDAPModDNRequest.cpp
index 0977e9b9c2af5761ca61d9cf27b83f26af2db8d6..0d964370791d47e1937d47ed5cd26ed8d46cb29e 100644 (file)
@@ -12,6 +12,8 @@
 #include "LDAPResult.h"
 #include "LDAPUrlList.h"
 
+using namespace std;
+
 LDAPModDNRequest::LDAPModDNRequest(const LDAPModDNRequest& req) :
         LDAPRequest(req){
     DEBUG(LDAP_DEBUG_CONSTRUCT, 
@@ -42,6 +44,9 @@ LDAPModDNRequest::LDAPModDNRequest(const string& dn, const string& newRDN,
 
 LDAPModDNRequest::~LDAPModDNRequest(){
     DEBUG(LDAP_DEBUG_DESTROY, "LDAPModDNRequest::~LDAPModDNRequest()" << endl);
+    // flush entries from the cache.
+    m_connection->uncache_entry(m_dn);
+    m_connection->uncache_entry(m_newRDN);
 }
 
 LDAPMessageQueue* LDAPModDNRequest::sendRequest(){
@@ -55,8 +60,8 @@ LDAPMessageQueue* LDAPModDNRequest::sendRequest(){
     LDAPControl** tmpClCtrls=m_cons->getClCtrlsArray();
     int err=ldap_rename(m_connection->getSessionHandle(),m_dn.c_str(),newRDN,
             newParentDN,m_deleteOld ? 1 : 0, tmpSrvCtrls, tmpClCtrls,&msg_id);
-    ldap_controls_free(tmpSrvCtrls);
-    ldap_controls_free(tmpClCtrls);
+    LDAPControlSet::freeLDAPControlArray(tmpSrvCtrls);
+    LDAPControlSet::freeLDAPControlArray(tmpClCtrls);
     if(err!=LDAP_SUCCESS){
         throw LDAPException(err);
     }else{