diff options
author | David Boreham <dboreham@redhat.com> | 2005-05-12 03:43:15 +0000 |
---|---|---|
committer | David Boreham <dboreham@redhat.com> | 2005-05-12 03:43:15 +0000 |
commit | c35b2451f5ec6c56384c1596b860975ca5d0a120 (patch) | |
tree | 86005388701eb2def57ea97bf0be855d3c8c77be | |
parent | e57cfacec154d8f473291db43c0d429ca519d400 (diff) | |
download | ds-c35b2451f5ec6c56384c1596b860975ca5d0a120.tar.gz ds-c35b2451f5ec6c56384c1596b860975ca5d0a120.tar.xz ds-c35b2451f5ec6c56384c1596b860975ca5d0a120.zip |
Fix Windows SSL replication in-order processing of operatations
-rw-r--r-- | ldap/servers/slapd/connection.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ldap/servers/slapd/connection.c b/ldap/servers/slapd/connection.c index e7a85243..b0fc7e05 100644 --- a/ldap/servers/slapd/connection.c +++ b/ldap/servers/slapd/connection.c @@ -64,6 +64,7 @@ static void op_copy_identity(Connection *conn, Operation *op); static int is_ber_too_big(const Connection *conn,unsigned long ber_len); static void log_ber_too_big_error(const Connection *conn, unsigned long ber_len, unsigned long maxbersize); +static int add_to_select_set(Connection *conn); /* * We maintain a global work queue of Slapi_PBlock's that have not yet @@ -765,7 +766,12 @@ static int handle_read_data(Connection *conn,Operation **op, if (replication_session) { /* Initiate any deferred I/O here */ if (defer_io) { - return_value2 = issue_new_read(conn); + if (conn->c_flags & CONN_FLAG_SSL) { + add_to_select_set(conn); + return_value2 = 0; + } else { + return_value2 = issue_new_read(conn); + } } if (defer_pushback) { return_value2 = queue_pushed_back_data(conn); @@ -1152,7 +1158,11 @@ static int read_the_data(Connection *conn, int *process_op, int *defer_io, int * priv->c_current_op = NULL; priv->c_flags = 0; return_value = 0; - add_to_select_set(conn); + if (!conn->c_isreplication_session) { + add_to_select_set(conn); + } else { + *defer_io = 1; + } } return return_value; |