]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:ldap_server: introduce a ldapsrv_call_destructor()
authorStefan Metzmacher <metze@samba.org>
Thu, 11 May 2017 14:37:21 +0000 (16:37 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 15 Jun 2017 07:13:22 +0000 (09:13 +0200)
This makes sure that a call doesn't become an stale
member of the conn->pending_calls list.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/ldap_server/ldap_server.c

index 347a17dde5a62b2a8de26b1d6b27521e266b066d..062c3fc4b56782ab548f2a22046c1f83536d8e7c 100644 (file)
@@ -254,6 +254,18 @@ failed:
        return -1;
 }
 
+static int ldapsrv_call_destructor(struct ldapsrv_call *call)
+{
+       if (call->conn == NULL) {
+               return 0;
+       }
+
+       DLIST_REMOVE(call->conn->pending_calls, call);
+
+       call->conn = NULL;
+       return 0;
+}
+
 static struct tevent_req *ldapsrv_process_call_send(TALLOC_CTX *mem_ctx,
                                                    struct tevent_context *ev,
                                                    struct tevent_queue *call_queue,
@@ -504,6 +516,7 @@ static void ldapsrv_call_read_done(struct tevent_req *subreq)
                ldapsrv_terminate_connection(conn, "no memory");
                return;
        }
+       talloc_set_destructor(call, ldapsrv_call_destructor);
 
        call->conn = conn;