summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-04 12:50:40 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-04 12:50:40 +0300
commit8ad17a57629321fb4cf03dd895606549802442d3 (patch)
tree154970e68ec9eafcb97fc6b62838ce7877e2c17a
parentc70c853ce55253ecbe0580131d1742b4701a4689 (diff)
downloadrspamd-8ad17a57629321fb4cf03dd895606549802442d3.tar.gz
rspamd-8ad17a57629321fb4cf03dd895606549802442d3.zip
* Drop privilleges immideately after creating of listen socket
-rw-r--r--src/main.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/main.c b/src/main.c
index f0eca39d3..b3a36da98 100644
--- a/src/main.c
+++ b/src/main.c
@@ -377,6 +377,29 @@ main (int argc, char **argv, char **env)
fprintf (stderr, "syntax OK\n");
return EXIT_SUCCESS;
}
+
+ /* Create listen socket */
+ if (rspamd->cfg->bind_family == AF_INET) {
+ if ((listen_sock = make_tcp_socket (&rspamd->cfg->bind_addr, rspamd->cfg->bind_port, TRUE)) == -1) {
+ msg_err ("main: cannot create tcp listen socket. %s", strerror (errno));
+ exit(-errno);
+ }
+ }
+ else {
+ un_addr = (struct sockaddr_un *) g_malloc (sizeof (struct sockaddr_un));
+ if (!un_addr || (listen_sock = make_unix_socket (rspamd->cfg->bind_host, un_addr, TRUE)) == -1) {
+ msg_err ("main: cannot create unix listen socket. %s", strerror (errno));
+ exit(-errno);
+ }
+ }
+
+ if (listen (listen_sock, -1) == -1) {
+ msg_err ("main: cannot listen on socket. %s", strerror (errno));
+ exit(-errno);
+ }
+
+ /* Drop privilleges */
+ drop_priv (cfg);
config_logger (rspamd, TRUE);
@@ -412,28 +435,6 @@ main (int argc, char **argv, char **env)
init_signals (&signals, sig_handler);
- /* Create listen socket */
- if (rspamd->cfg->bind_family == AF_INET) {
- if ((listen_sock = make_tcp_socket (&rspamd->cfg->bind_addr, rspamd->cfg->bind_port, TRUE)) == -1) {
- msg_err ("main: cannot create tcp listen socket. %s", strerror (errno));
- exit(-errno);
- }
- }
- else {
- un_addr = (struct sockaddr_un *) g_malloc (sizeof (struct sockaddr_un));
- if (!un_addr || (listen_sock = make_unix_socket (rspamd->cfg->bind_host, un_addr, TRUE)) == -1) {
- msg_err ("main: cannot create unix listen socket. %s", strerror (errno));
- exit(-errno);
- }
- }
-
- if (listen (listen_sock, -1) == -1) {
- msg_err ("main: cannot listen on socket. %s", strerror (errno));
- exit(-errno);
- }
-
- /* Drop privilleges */
- drop_priv (cfg);
if (write_pid (rspamd) == -1) {
msg_err ("main: cannot write pid file %s", rspamd->cfg->pid_file);
@@ -455,7 +456,6 @@ main (int argc, char **argv, char **env)
/* Block signals to use sigsuspend in future */
sigprocmask(SIG_BLOCK, &signals.sa_mask, NULL);
-
TAILQ_INIT (&rspamd->workers);
setproctitle ("main process");