If the training mode has been specified on the command line, it should
not be overruled by the user's (or default) preferences. Also, this
patch removes the DST_DEFAULT constant from the libdspam interface
since it has only been (ab)used by the agent and never really belonged
to the library in the first place.
---
src/agent_shared.c | 18 ++++++++----------
src/agent_shared.h | 1 +
src/dspam.c | 4 +++-
src/libdspam_objects.h | 1 -
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/agent_shared.c b/src/agent_shared.c
index 7e09169..14088c9 100644
--- a/src/agent_shared.c
+++ b/src/agent_shared.c
@@ -94,7 +94,6 @@ uid_t __pw_uid;
int initialize_atx(AGENT_CTX *ATX) {
memset(ATX, 0, sizeof(AGENT_CTX));
- ATX->training_mode = DST_DEFAULT;
ATX->training_buffer = 0;
ATX->train_pristine = 0;
ATX->classification = DSR_NONE;
@@ -237,7 +236,9 @@ int process_arguments(AGENT_CTX *ATX, int argc, char
**argv) {
if (!strncmp (argv[i], "--mode=", 7))
{
char *mode = strchr(argv[i], '=')+1;
- process_mode(ATX, mode);
+ if (process_mode(ATX, mode))
+ return EINVAL;
+ ATX->flags |= DAF_FIXED_TR_MODE;
continue;
}
@@ -590,9 +591,12 @@ int apply_defaults(AGENT_CTX *ATX) {
/* Training mode */
- if (ATX->training_mode == DST_DEFAULT) {
+ if (!(ATX->flags & DAF_FIXED_TR_MODE)) {
char *v = _ds_read_attribute(agent_config, "TrainingMode");
- process_mode(ATX, v);
+ if (process_mode(ATX, v)) {
+ LOG(LOG_ERR, ERR_AGENT_NO_TR_MODE);
+ return EINVAL;
+ }
}
/* Default delivery agent */
@@ -695,12 +699,6 @@ int check_configuration(AGENT_CTX *ATX) {
return EINVAL;
}
- if (ATX->training_mode == DST_DEFAULT)
- {
- LOG(LOG_ERR, ERR_AGENT_NO_TR_MODE);
- return EINVAL;
- }
-
if (!_ds_match_attribute(agent_config, "ParseToHeaders", "on")) {
if (ATX->users->items == 0)
diff --git a/src/agent_shared.h b/src/agent_shared.h
index d74534c..3fc6a31 100644
--- a/src/agent_shared.h
+++ b/src/agent_shared.h
@@ -131,6 +131,7 @@ int init_pwent_cache(void);
#define DAF_MERGED 0x80
#define DAF_SUMMARY 0x100
#define DAF_UNLEARN 0x200
+#define DAF_FIXED_TR_MODE 0x400
#define DAZ_WORD 0x01
#define DAZ_CHAIN 0x02
diff --git a/src/dspam.c b/src/dspam.c
index 3680ba8..e8771e5 100644
--- a/src/dspam.c
+++ b/src/dspam.c
@@ -2740,7 +2740,9 @@ DSPAM_CTX *ctx_init(AGENT_CTX *ATX, const char *username)
{
CTX->source = ATX->source;
}
- if (ATX->PTX != NULL && strcmp(_ds_pref_val(ATX->PTX, "trainingMode"), "")) {
+ if (!( ATX->flags & DAF_FIXED_TR_MODE)
+ && ATX->PTX != NULL
+ && strcmp(_ds_pref_val(ATX->PTX, "trainingMode"), "")) {
if (!strcasecmp(_ds_pref_val(ATX->PTX, "trainingMode"), "TEFT"))
CTX->training_mode = DST_TEFT;
else if (!strcasecmp(_ds_pref_val(ATX->PTX, "trainingMode"), "TOE"))
diff --git a/src/libdspam_objects.h b/src/libdspam_objects.h
index ecb0dce..308e045 100644
--- a/src/libdspam_objects.h
+++ b/src/libdspam_objects.h
@@ -370,7 +370,6 @@ typedef struct
#define DST_TOE 0x01
#define DST_TUM 0x02
#define DST_NOTRAIN 0xFE
-#define DST_DEFAULT 0xFF
/* Classification Results */
--
1.6.3.3
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Dspam-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspam-devel