Fix operation status tracking.

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).
This commit is contained in:
Ondřej Kuzník 2018-02-21 13:51:51 +00:00
parent cfe9065824
commit edfb3d73d6
2 changed files with 2 additions and 0 deletions

View 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 ) ) {

View 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 ) {