]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Fix operation status tracking.
authorOndřej Kuzník <okuznik@symas.com>
Wed, 21 Feb 2018 13:51:51 +0000 (13:51 +0000)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:58:14 +0000 (17:58 +0000)
An operation is rejected iff it has to be dropped before we can find an
upstream for it (unless we handle it ourselves, that is). At that point
it is failed unless completed successfully.

This makes a difference for multi-stage binds which alternate between
'failed' (we are waiting on a server response) and 'completed' (server
did what we asked them to, waiting on client to continue).

servers/lloadd/bind.c
servers/lloadd/client.c

index f803c915b4cbbc9cd3242bda79dfde6109e75163..c8e9ea68285fa512918ccd7c3155b8148a0585a5 100644 (file)
@@ -408,6 +408,7 @@ request_bind( LloadConnection *client, LloadOperation *op )
     op->o_upstream = upstream;
     op->o_upstream_connid = upstream->c_connid;
     op->o_upstream_msgid = upstream->c_next_msgid++;
+    op->o_res = LLOAD_OP_FAILED;
 
     if ( BER_BVISNULL( &mech ) ) {
         if ( !BER_BVISNULL( &upstream->c_sasl_bind_mech ) ) {
index 87fb009dd22ac288aa95bc5f8e8247ed94daa5c1..0cc1b504e34b041b9acfdc6e3cb9937b7beb36aa 100644 (file)
@@ -106,6 +106,7 @@ request_process( LloadConnection *client, LloadOperation *op )
     }
     op->o_upstream = upstream;
     op->o_upstream_connid = upstream->c_connid;
+    op->o_res = LLOAD_OP_FAILED;
 
     output = upstream->c_pendingber;
     if ( output == NULL && (output = ber_alloc()) == NULL ) {