diff options
Diffstat (limited to 'mail/em-junk-filter.c')
-rw-r--r-- | mail/em-junk-filter.c | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/mail/em-junk-filter.c b/mail/em-junk-filter.c index ddb18c245e..29e618205f 100644 --- a/mail/em-junk-filter.c +++ b/mail/em-junk-filter.c @@ -64,6 +64,7 @@ static EMJunkPlugin spam_assassin_plugin = { }; static gboolean em_junk_sa_tested = FALSE; +static gboolean em_junk_sa_spamd_tested = FALSE; static gboolean em_junk_sa_use_spamc = FALSE; static gboolean em_junk_sa_available = FALSE; static int em_junk_sa_spamd_port = -1; @@ -202,28 +203,32 @@ em_junk_sa_test_spamd_running (int port) return pipe_to_sa (NULL, "From test@127.0.0.1", argv) == 0; } -#define SPAMD_PORT 7830 -#define MAX_SPAMD_PORTS 1 - static void -em_junk_sa_test_spamd (void) +em_junk_sa_test_spamassassin (void) { - int port = em_junk_sa_get_daemon_port (); - int i; - char *argv[6] = { + char *argv[4] = { "/bin/sh", "-c", "spamassassin --version", NULL, }; - if (pipe_to_sa (NULL, NULL, argv) != 0) { + if (pipe_to_sa (NULL, NULL, argv) != 0) em_junk_sa_available = FALSE; - em_junk_sa_tested = TRUE; - return; - } - - em_junk_sa_available = TRUE; + else + em_junk_sa_available = TRUE; + + em_junk_sa_tested = TRUE; +} + +#define MAX_SPAMD_PORTS 1 + +static void +em_junk_sa_test_spamd (void) +{ + int port = em_junk_sa_get_daemon_port (); + int i; + em_junk_sa_use_spamc = FALSE; if (em_junk_sa_test_spamd_running (-1)) { @@ -240,6 +245,7 @@ em_junk_sa_test_spamd (void) } if (!em_junk_sa_use_spamc) { + char *argv[6]; char port_buf[12]; int i = 0; @@ -270,7 +276,7 @@ em_junk_sa_test_spamd (void) d(fprintf (stderr, "use spamd %d at port %d\n", em_junk_sa_use_spamc, em_junk_sa_spamd_port)); - em_junk_sa_tested = TRUE; + em_junk_sa_spamd_tested = TRUE; } static gboolean @@ -284,6 +290,9 @@ em_junk_sa_is_available (void) } if (!em_junk_sa_tested) + em_junk_sa_test_spamassassin (); + + if (em_junk_sa_available && !em_junk_sa_spamd_tested && em_junk_sa_get_use_daemon ()) em_junk_sa_test_spamd (); pthread_mutex_unlock (&em_junk_sa_init_lock); |