From 7a0e61f38ea6b13f1f45e89f6f160d6c32f08617 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 15 Jul 2004 09:43:32 +0000 Subject: r1516: remove the server_connection from the list on the server_socket and call talloc_destroy(srv_conn->mem_ctx) also don't follow NULL pointers metze (This used to be commit 786c00c3d4f510c870a45f11af69281298ba176d) --- source4/smbd/process_thread.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'source4/smbd/process_thread.c') diff --git a/source4/smbd/process_thread.c b/source4/smbd/process_thread.c index 687dafea04..ced07d5d76 100644 --- a/source4/smbd/process_thread.c +++ b/source4/smbd/process_thread.c @@ -108,8 +108,21 @@ static void thread_accept_connection(struct event_context *ev, struct fd_event * static void thread_terminate_connection(struct server_connection *conn, const char *reason) { DEBUG(0,("thread_terminate_connection: reason[%s]\n",reason)); - conn->service->ops->close_connection(conn,reason); - server_destroy_connection(conn); + + if (conn) { + if (conn->service) { + conn->service->ops->close_connection(conn,reason); + } + + if (conn->server_socket) { + MUTEX_LOCK_BY_ID(MUTEX_SMBD); + DLIST_REMOVE(conn->server_socket->connection_list,conn); + MUTEX_UNLOCK_BY_ID(MUTEX_SMBD); + } + + server_destroy_connection(conn); + } + /* terminate this thread */ pthread_exit(NULL); /* thread cleanup routine will do actual cleanup */ } -- cgit