~jscott/OpenLDAP

5677a410e6c2d5df8c370352c13ed903f8561aa8 — Ondřej Kuzník 10 months ago 6cbcfa0 DANE master
ITS#10083 Do not mess with a connection that's dying already
1 files changed, 8 insertions(+), 3 deletions(-)

M servers/lloadd/upstream.c
M servers/lloadd/upstream.c => servers/lloadd/upstream.c +8 -3
@@ 139,17 139,22 @@ static int
handle_unsolicited( LloadConnection *c, BerElement *ber )
{
    CONNECTION_ASSERT_LOCKED(c);
    if ( c->c_state != LLOAD_C_PREPARING ) {
        c->c_state = LLOAD_C_CLOSING;

    assert( c->c_state != LLOAD_C_INVALID );
    if ( c->c_state == LLOAD_C_DYING ) {
        CONNECTION_UNLOCK(c);
        goto out;
    }
    c->c_state = LLOAD_C_CLOSING;

    Debug( LDAP_DEBUG_STATS, "handle_unsolicited: "
            "teardown for upstream connection connid=%lu\n",
            c->c_connid );

    CONNECTION_DESTROY(c);
    ber_free( ber, 1 );

out:
    ber_free( ber, 1 );
    return -1;
}