hi,
i'm trying to do an ldap_add operation using openldap client lib against ActiveDirectory on MAC I want to be able to roll back this add operation so I'm using transactions like this
int rc = ldap_add_ext_s(ld, [userDN cStringUsingEncoding: NSUTF8StringEncoding], mods, hcdTC_new, NULL );
hcdTransactionId.ldctl_value.bv_val = (hcdTC_new[0])->ldctl_value.bv_val ;
hcdTransactionId.ldctl_value.bv_len = (hcdTC_new[0])->ldctl_value.bv_len ;
when I try to rollback
rc = ldap_add_ext_s(ld, [userDN cStringUsingEncoding: NSUTF8StringEncoding], mods, hcdTC_rollback, NULL );;
it says user already exists which means it created the user without my having to commit the transaction, how can I rollback and ldap add operation
here are the definitions of variables
static LDAPControl hcdTransactionControl_new =
{
"1.3.18.0.2.10.3", /* -- hcdTransactionControl -- */
{ 3, "\x4E\x45\x57\x00" }, /* -- NEW ------------- */
'\0' /* -- critical --------------- */
} ;
static LDAPControl *hcdTC_new[2] = { &hcdTransactionControl_new, NULL };
static LDAPControl hcdTransactionId =
{
"1.3.18.0.2.10.4", /* -- hcdTransactionId ------ */
{ 1, "\x31\x00" }, /* -- TXN Id ---------------- */
'\0' /* -- critical -------------- */
};
static LDAPControl *hcdTC_Id[2] = { &hcdTransactionId, NULL };
static LDAPControl hcdTransactionControl_commit =
{
"1.3.18.0.2.10.3", /* -- hcdTransactionControl -- */
{ 6, "\x43\x4F\x4D\x4D\x49\x54\x00" },/* - COMMIT -- */
'\0' /* -- critical --------------- */
};
static LDAPControl *hcdTC_commit[3] = { &hcdTransactionControl_commit, & hcdTransactionId, NULL };
static LDAPControl hcdTransaction_rollback =
{
"1.3.18.0.2.10.3", /* -- hcdTransactionControl -- */
{ 8, "\x52\x4F\x4C\x4C\x42\x41\x43\x4B\x00" }, /*ROLLBACK*/
'\0' /* -- critical --------------- */
};
static LDAPControl *hcdTC_rollback[3] = { &hcdTransaction_rollback, & hcdTransactionId, NULL };