diff options
Diffstat (limited to 'source3/smbd/server_exit.c')
-rw-r--r-- | source3/smbd/server_exit.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source3/smbd/server_exit.c b/source3/smbd/server_exit.c index 01e3ef83f03..397ea810633 100644 --- a/source3/smbd/server_exit.c +++ b/source3/smbd/server_exit.c @@ -99,10 +99,25 @@ static void exit_server_common(enum server_exit_reason how, } if (client != NULL) { + NTSTATUS status; + sconn = client->sconn; xconn = client->connections; - } + /* + * Make sure we stop handling new multichannel + * connections early! + * + * From here, we're not able to handle them. + */ + status = smbXsrv_client_remove(client); + if (!NT_STATUS_IS_OK(status)) { + D_ERR("Server exit (%s)\n", + (reason ? reason : "normal exit")); + DBG_ERR("smbXsrv_client_remove() failed (%s)\n", + nt_errstr(status)); + } + } change_to_root_user(); |