]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPAddRequest.cpp
Entry rwlock is no longer needed as concurrency is managed
[openldap] / contrib / ldapc++ / src / LDAPAddRequest.cpp
index f92e233b055e4f1712b4335ec355e47fa44201e1..b3a1a4d099373699d34294e004cbe8ec66a3fcac 100644 (file)
@@ -14,6 +14,8 @@
 #include "LDAPMessageQueue.h"
 #include "LDAPResult.h"
 
+using namespace std;
+
 LDAPAddRequest::LDAPAddRequest(const LDAPAddRequest& req) :
         LDAPRequest(req){
     DEBUG(LDAP_DEBUG_CONSTRUCT, "LDAPAddRequest::LDAPAddRequest(&)" << endl);
@@ -35,6 +37,8 @@ LDAPAddRequest::LDAPAddRequest(const LDAPEntry* entry,
 LDAPAddRequest::~LDAPAddRequest(){
     DEBUG(LDAP_DEBUG_DESTROY, "LDAPAddRequest::~LDAPAddRequest()" << endl);
     delete m_entry;
+    // flush the cache, as the add may affect searches
+    m_connection->flush_cache();
 }
 
 LDAPMessageQueue* LDAPAddRequest::sendRequest(){
@@ -46,8 +50,8 @@ LDAPMessageQueue* LDAPAddRequest::sendRequest(){
     LDAPControl** tmpClCtrls = m_cons->getClCtrlsArray();
     int err=ldap_add_ext(m_connection->getSessionHandle(),
             m_entry->getDN().c_str(),attrs,tmpSrvCtrls,tmpClCtrls,&msgID);
-    ldap_controls_free(tmpSrvCtrls);
-    ldap_controls_free(tmpClCtrls);
+    LDAPControlSet::freeLDAPControlArray(tmpSrvCtrls);
+    LDAPControlSet::freeLDAPControlArray(tmpClCtrls);
     ldap_mods_free(attrs,1);
     if(err != LDAP_SUCCESS){
         throw LDAPException(err);