Calls to exit_server_cleanly() should be treated as a "clean" shutdown,
and not trigger the master smbd to call cleanup_timeout_fn.
The last 2 patches address bug #8971 (cleanup_timeout_fn() is called too often,
on exiting when an smbd is idle.)
static void exit_server_common(enum server_exit_reason how,
const char *const reason)
{
static void exit_server_common(enum server_exit_reason how,
const char *const reason)
{
- bool had_open_conn = false;
struct smbd_server_connection *sconn = smbd_server_conn;
if (!exit_firsttime)
struct smbd_server_connection *sconn = smbd_server_conn;
if (!exit_firsttime)
bool found = false;
files_forall(sconn, log_writeable_file_fn, &found);
}
bool found = false;
files_forall(sconn, log_writeable_file_fn, &found);
}
- had_open_conn = conn_close_all(sconn);
+ (void)conn_close_all(sconn);
invalidate_all_vuids(sconn);
}
invalidate_all_vuids(sconn);
}
+ /* Notreached. */
+ exit(1);
} else {
DEBUG(3,("Server exit (%s)\n",
(reason ? reason : "normal exit")));
} else {
DEBUG(3,("Server exit (%s)\n",
(reason ? reason : "normal exit")));
- /* if we had any open SMB connections when we exited then we
- need to tell the parent smbd so that it can trigger a retry
- of any locks we may have been holding or open files we were
- blocking */
- if (had_open_conn) {
- exit(1);
- } else {
- exit(0);
- }
}
void exit_server(const char *const explanation)
}
void exit_server(const char *const explanation)