diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-07-15 09:43:32 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:57:38 -0500 |
commit | 7a0e61f38ea6b13f1f45e89f6f160d6c32f08617 (patch) | |
tree | f23d46549ac59b97ecd78fec2f4747c2c4c737dc /source4/smbd/process_standard.c | |
parent | b11e1a41d8bc30d1849e95bf47b84a081570bd07 (diff) | |
download | samba-7a0e61f38ea6b13f1f45e89f6f160d6c32f08617.tar.gz samba-7a0e61f38ea6b13f1f45e89f6f160d6c32f08617.tar.bz2 samba-7a0e61f38ea6b13f1f45e89f6f160d6c32f08617.zip |
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)
Diffstat (limited to 'source4/smbd/process_standard.c')
-rw-r--r-- | source4/smbd/process_standard.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source4/smbd/process_standard.c b/source4/smbd/process_standard.c index 19306656b5..c12a1f4305 100644 --- a/source4/smbd/process_standard.c +++ b/source4/smbd/process_standard.c @@ -91,8 +91,19 @@ static void standard_accept_connection(struct event_context *ev, struct fd_event static void standard_terminate_connection(struct server_connection *conn, const char *reason) { DEBUG(0,("single_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) { + DLIST_REMOVE(conn->server_socket->connection_list,conn); + } + + server_destroy_connection(conn); + } + /* terminate this process */ exit(0); } |