]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Lookup operations by saved connid.
authorOndřej Kuzník <ondra@mistotebe.net>
Thu, 18 May 2017 15:28:55 +0000 (16:28 +0100)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:55:46 +0000 (17:55 +0000)
We reset the connection pointer on a destruction attempt, avoid the
spurious asserts.

servers/lloadd/operation.c
servers/lloadd/upstream.c

index 0882222aed4349a86b73a819bf229df6f695cea1..e844ff18ece9b6468d61753f8ea682c5cd0f12ec 100644 (file)
@@ -86,7 +86,7 @@ operation_client_cmp( const void *left, const void *right )
 {
     const Operation *l = left, *r = right;
 
-    assert( l->o_client == r->o_client );
+    assert( l->o_client_connid == r->o_client_connid );
     return ( l->o_client_msgid < r->o_client_msgid ) ?
             -1 :
             ( l->o_client_msgid > r->o_client_msgid );
@@ -97,7 +97,7 @@ operation_upstream_cmp( const void *left, const void *right )
 {
     const Operation *l = left, *r = right;
 
-    assert( l->o_upstream == r->o_upstream );
+    assert( l->o_upstream_connid == r->o_upstream_connid );
     return ( l->o_upstream_msgid < r->o_upstream_msgid ) ?
             -1 :
             ( l->o_upstream_msgid > r->o_upstream_msgid );
@@ -515,7 +515,7 @@ done:
 int
 request_abandon( Connection *c, Operation *op )
 {
-    Operation *request, needle = { .o_client = c };
+    Operation *request, needle = { .o_client_connid = c->c_connid };
     ber_tag_t tag;
     int rc = LDAP_SUCCESS;
 
index 6ffbaa078b478eb4488e56d73af7656e5c92af21..afde02e59e50c557bed7c6dc3e7974d1a71ec5dc 100644 (file)
@@ -314,7 +314,7 @@ static int
 handle_one_response( Connection *c )
 {
     BerElement *ber;
-    Operation *op = NULL, needle = { .o_upstream = c };
+    Operation *op = NULL, needle = { .o_upstream_connid = c->c_connid };
     OperationHandler handler = NULL;
     ber_tag_t tag;
     ber_len_t len;