From 8788a2af3663988d71c57b6c0e39622299b823fc Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 7 Mar 2006 20:31:46 +0000 Subject: [PATCH] Disallow pre/post reads in transactions (haven't yet specified protocol mechanism to return update response controls). --- servers/slapd/controls.c | 10 ++++++++++ servers/slapd/txn.c | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/servers/slapd/controls.c b/servers/slapd/controls.c index cf4cfa930f..5d9d73f412 100644 --- a/servers/slapd/controls.c +++ b/servers/slapd/controls.c @@ -1208,6 +1208,11 @@ static int parsePreRead ( return LDAP_PROTOCOL_ERROR; } + if ( op->o_txnSpec ) { /* temporary limitation */ + rs->sr_text = "cannot perform pre-read in transaction"; + return LDAP_UNWILLING_TO_PERFORM; + } + ber = ber_init( &(ctrl->ldctl_value) ); if (ber == NULL) { rs->sr_text = "preread control: internal error"; @@ -1266,6 +1271,11 @@ static int parsePostRead ( return LDAP_PROTOCOL_ERROR; } + if ( op->o_txnSpec ) { /* temporary limitation */ + rs->sr_text = "cannot perform post-read in transaction"; + return LDAP_UNWILLING_TO_PERFORM; + } + ber = ber_init( &(ctrl->ldctl_value) ); if (ber == NULL) { rs->sr_text = "postread control: internal error"; diff --git a/servers/slapd/txn.c b/servers/slapd/txn.c index f8fb65785d..03cc7e337a 100644 --- a/servers/slapd/txn.c +++ b/servers/slapd/txn.c @@ -99,6 +99,15 @@ int txn_spec_ctrl( return LDAP_X_TXN_ID_INVALID; } + if ( op->o_preread ) { /* temporary limitation */ + rs->sr_text = "cannot perform pre-read in transaction"; + return LDAP_UNWILLING_TO_PERFORM; + } + if ( op->o_postread ) { /* temporary limitation */ + rs->sr_text = "cannot perform post-read in transaction"; + return LDAP_UNWILLING_TO_PERFORM; + } + op->o_txnSpec = SLAP_CONTROL_CRITICAL; return LDAP_SUCCESS; } -- 2.39.5