+// $OpenLDAP$
/*
- * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 2000-2011 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
using namespace std;
-LDAPCtrl::LDAPCtrl(const LDAPCtrl& c){
- DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl(&)" << endl);
- m_oid=c.m_oid;
- m_data=c.m_data;
- m_isCritical=c.m_isCritical;
-}
-
LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data,
int length){
DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
m_data.assign(data,length);
}else{
m_data=string();
+ m_noData=true;
}
}
-
LDAPCtrl::LDAPCtrl(const string& oid, bool critical, const string& data){
DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl);
DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER,
m_oid=oid;
m_isCritical=critical;
m_data=data;
+ m_noData=false;
}
LDAPCtrl::LDAPCtrl(const LDAPControl* ctrl){
return m_isCritical;
}
+bool LDAPCtrl::hasData() const{
+ return !m_noData;
+}
+
string LDAPCtrl::getData() const {
DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl);
return m_data;
ret->ldctl_oid= new char[m_oid.size() + 1];
m_oid.copy(ret->ldctl_oid,string::npos);
ret->ldctl_oid[m_oid.size()]=0;
- ret->ldctl_value.bv_len=m_data.size();
- ret->ldctl_value.bv_val= new char[m_data.size()];
- m_data.copy(ret->ldctl_value.bv_val,string::npos);
+ if ( m_noData ) {
+ ret->ldctl_value.bv_len = 0;
+ ret->ldctl_value.bv_val = NULL;
+ } else {
+ ret->ldctl_value.bv_len=m_data.size();
+ ret->ldctl_value.bv_val= new char[m_data.size()];
+ m_data.copy(ret->ldctl_value.bv_val,string::npos);
+ }
ret->ldctl_iscritical = ( m_isCritical ? 1:0);
return ret;
}
+void LDAPCtrl::freeLDAPControlStruct(LDAPControl *ctrl){
+ DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::freeControlStruct()" << endl);
+ delete[] ctrl->ldctl_oid;
+ delete[] ctrl->ldctl_value.bv_val;
+ delete ctrl;
+}
+