diff --git a/servers/slapd/add.c b/servers/slapd/add.c
index 1c897d91f89c2c23754810d45c7bf4cd4bf8811f..b1db141b594b7b5b19deb9d9842912712961b763 100644
--- a/servers/slapd/add.c
+++ b/servers/slapd/add.c
@@ -35,6 +35,13 @@ do_add( Connection *conn, Operation *op )
 
 	Debug( LDAP_DEBUG_TRACE, "do_add\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_add: SASL bind in progress.\n", 0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the add request.  It looks like this:
 	 *
diff --git a/servers/slapd/compare.c b/servers/slapd/compare.c
index 6519084aa19167e014ff5e2a5f7a8d5d1c548a52..544b7ca1cd8c5b8350a7de4e112d806963ac04d0 100644
--- a/servers/slapd/compare.c
+++ b/servers/slapd/compare.c
@@ -31,6 +31,14 @@ do_compare(
 
 	Debug( LDAP_DEBUG_TRACE, "do_compare\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_compare: SASL bind in progress.\n",
+			0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the compare request.  It looks like this:
 	 *
diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c
index 13c099b597cb92854897a035fdb4baa17dca2572..06253200a5c7f9839347018f64127fddcffa891b 100644
--- a/servers/slapd/delete.c
+++ b/servers/slapd/delete.c
@@ -31,6 +31,14 @@ do_delete(
 
 	Debug( LDAP_DEBUG_TRACE, "do_delete\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_delete: SASL bind in progress.\n",
+			0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the delete request.  It looks like this:
 	 *
diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c
index 2d412d0b1f64070019dbd524d45c2b7e27e3f697..c245a54c62b3c67f537bd970be3a61fdfce4b828 100644
--- a/servers/slapd/modify.c
+++ b/servers/slapd/modify.c
@@ -42,6 +42,14 @@ do_modify(
 
 	Debug( LDAP_DEBUG_TRACE, "do_modify\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_modify: SASL bind in progress.\n",
+			0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the modify request.  It looks like this:
 	 *
diff --git a/servers/slapd/modrdn.c b/servers/slapd/modrdn.c
index 329190f930811bd25a6e8e523f5ad1636e9cffe0..d3f04f8ff52f80e17506e6c2f22ab152b3058e37 100644
--- a/servers/slapd/modrdn.c
+++ b/servers/slapd/modrdn.c
@@ -50,6 +50,14 @@ do_modrdn(
 
 	Debug( LDAP_DEBUG_TRACE, "do_modrdn\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_modrdn: SASL bind in progress.\n",
+			0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the modrdn request.  It looks like this:
 	 *
diff --git a/servers/slapd/search.c b/servers/slapd/search.c
index 920685e58a7cdf41a7d2fd3725f4025a14240a29..25f73163791911241c414609bfc501b8764c6ba0 100644
--- a/servers/slapd/search.c
+++ b/servers/slapd/search.c
@@ -38,6 +38,14 @@ do_search(
 
 	Debug( LDAP_DEBUG_TRACE, "do_search\n", 0, 0, 0 );
 
+	if( op->o_bind_in_progress ) {
+		Debug( LDAP_DEBUG_ANY, "do_search: SASL bind in progress.\n",
+			0, 0, 0 );
+		send_ldap_result( conn, op, LDAP_SASL_BIND_IN_PROGRESS, NULL,
+		    "SASL bind in progress" );
+		return LDAP_SASL_BIND_IN_PROGRESS;
+	}
+
 	/*
 	 * Parse the search request.  It looks like this:
 	 *