aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-27 14:21:27 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-27 14:21:27 +0300
commita83e5f18a2b6d9dc3196045867bcd842cfea3323 (patch)
tree5272d1159063abc10b92033f0a914aa2d36d06d2 /src
parentfdccb337ed73f14b204721cf464ca03a7eca49b6 (diff)
downloadrspamd-a83e5f18a2b6d9dc3196045867bcd842cfea3323.tar.gz
rspamd-a83e5f18a2b6d9dc3196045867bcd842cfea3323.zip
* Add ability to build rspamd without perl support
* Fix creating of uinx socket * Improve some build issues
Diffstat (limited to 'src')
-rw-r--r--src/cfg_file.y5
-rw-r--r--src/cfg_utils.c1
-rw-r--r--src/filter.c9
-rw-r--r--src/main.c14
-rw-r--r--src/util.c4
-rw-r--r--src/worker.c6
6 files changed, 31 insertions, 8 deletions
diff --git a/src/cfg_file.y b/src/cfg_file.y
index 7e86c3d9f..a12e047c4 100644
--- a/src/cfg_file.y
+++ b/src/cfg_file.y
@@ -385,6 +385,7 @@ requirebody:
requirecmd:
MODULE EQSIGN QUOTEDSTRING {
+#ifndef WITHOUT_PERL
struct stat st;
struct perl_module *cur;
if (stat ($3, &st) == -1) {
@@ -398,6 +399,10 @@ requirecmd:
}
cur->path = $3;
LIST_INSERT_HEAD (&cfg->perl_modules, cur, next);
+#else
+ yyerror ("require command is not available when perl support is not compiled");
+ YYERROR;
+#endif
}
;
diff --git a/src/cfg_utils.c b/src/cfg_utils.c
index a9be83545..b7c540ec4 100644
--- a/src/cfg_utils.c
+++ b/src/cfg_utils.c
@@ -25,6 +25,7 @@
#include "config.h"
#include <math.h>
+
#include "cfg_file.h"
#include "main.h"
#include "filter.h"
diff --git a/src/filter.c b/src/filter.c
index d273a21ff..801b2f8bb 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -32,12 +32,15 @@
#include "main.h"
#include "message.h"
#include "cfg_file.h"
-#include "perl.h"
#include "util.h"
#include "expressions.h"
#include "classifiers/classifiers.h"
#include "tokenizers/tokenizers.h"
+#ifndef WITHOUT_PERL
+#include "perl.h"
+#endif
+
void
insert_result (struct worker_task *task, const char *metric_name, const char *symbol, double flag, GList *opts)
{
@@ -168,6 +171,7 @@ call_filter_by_name (struct worker_task *task, const char *name, enum filter_typ
break;
case PERL_FILTER:
res = 1;
+#ifndef WITHOUT_PERL
switch (sc_type) {
case SCRIPT_HEADER:
perl_call_header_filter (name, task);
@@ -182,6 +186,9 @@ call_filter_by_name (struct worker_task *task, const char *name, enum filter_typ
perl_call_message_filter (name, task);
break;
}
+#else
+ msg_err ("call_filter_by_name: trying to call perl function while perl support is disabled %s", name);
+#endif
break;
}
diff --git a/src/main.c b/src/main.c
index 90bf92156..bbe24dd1b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -26,9 +26,12 @@
#include "main.h"
#include "cfg_file.h"
#include "util.h"
-#include "perl.h"
#include "lmtp.h"
+#ifndef WITHOUT_PERL
+#include "perl.h"
+#endif
+
/* 2 seconds to fork new process in place of dead one */
#define SOFT_FORK_TIME 2
@@ -45,11 +48,13 @@ sig_atomic_t got_alarm;
extern int yynerrs;
extern FILE *yyin;
-extern void xs_init(pTHX);
static int dump_vars = 0;
+#ifndef WITHOUT_PERL
+extern void xs_init(pTHX);
extern PerlInterpreter *perl_interpreter;
+#endif
/* List of workers that are pending to start */
static GList *workers_pending = NULL;
@@ -378,7 +383,9 @@ main (int argc, char **argv, char **env)
struct rspamd_worker *cur, *cur_tmp, *active_worker;
FILE *f;
pid_t wrk;
+#ifndef WITHOUT_PERL
char *args[] = { "", "-e", "0", NULL };
+#endif
rspamd = (struct rspamd_main *)g_malloc (sizeof (struct rspamd_main));
bzero (rspamd, sizeof (struct rspamd_main));
@@ -521,6 +528,7 @@ main (int argc, char **argv, char **env)
exit (-errno);
}
+#ifndef WITHOUT_PERL
/* Init perl interpreter */
dTHXa (perl_interpreter);
PERL_SYS_INIT3 (&argc, &argv, &env);
@@ -533,6 +541,8 @@ main (int argc, char **argv, char **env)
PERL_SET_CONTEXT (perl_interpreter);
perl_construct (perl_interpreter);
perl_parse (perl_interpreter, xs_init, 3, args, NULL);
+#endif
+
/* Block signals to use sigsuspend in future */
sigprocmask(SIG_BLOCK, &signals.sa_mask, NULL);
diff --git a/src/util.c b/src/util.c
index 64f8910e6..bedb4114d 100644
--- a/src/util.c
+++ b/src/util.c
@@ -172,10 +172,10 @@ make_unix_socket (const char *path, struct sockaddr_un *addr, gboolean is_server
}
if (is_server) {
setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (const void *) &on, sizeof(int));
- r = bind (fd, (struct sockaddr *)&sin, sizeof (struct sockaddr_in));
+ r = bind (fd, (struct sockaddr *)addr, sizeof (struct sockaddr_in));
}
else {
- r = connect (fd, (struct sockaddr *)&sin, sizeof (struct sockaddr_in));
+ r = connect (fd, (struct sockaddr *)addr, sizeof (struct sockaddr_in));
}
if (r == -1) {
diff --git a/src/worker.c b/src/worker.c
index 02fcc8707..1f1548dd1 100644
--- a/src/worker.c
+++ b/src/worker.c
@@ -36,15 +36,15 @@
#include "modules.h"
#include "message.h"
+#ifndef WITHOUT_PERL
#include <EXTERN.h> /* from the Perl distribution */
#include <perl.h> /* from the Perl distribution */
-#define TASK_POOL_SIZE 4095
+extern PerlInterpreter *perl_interpreter;
+#endif
static struct timeval io_tv;
-extern PerlInterpreter *perl_interpreter;
-
static void write_socket (void *arg);
static