diff --git a/smmapdfw/cyrus_worker/cyrus_worker.c b/smmapdfw/cyrus_worker/cyrus_worker.c index efc253a..c83a1f2 100644 --- a/smmapdfw/cyrus_worker/cyrus_worker.c +++ b/smmapdfw/cyrus_worker/cyrus_worker.c @@ -28,6 +28,7 @@ #include "smtp.h" #include "htdns.h" #include "htmalloc.h" +#include "stats.h" #define SMM_LOCAL_PERM_NOK 101 #define SMM_LOCAL_TEMP_NOK 102 @@ -125,9 +126,12 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) { syslog(LOG_DEBUG, "cyrus_work: (%04x) going to check %s", log_id, input); + incStatCounter(STAT_CNT_CYRUS_WORKER); + depot_uid = input; if (NULL == (depot_host = strchr(depot_uid, ' '))) { snprintf(output, ANSWER_BUFSIZE, ILLEGAL_INPUT); + incStatCounter(STAT_CNT_CYRUS_ILLEGAL_INPUT); return SMM_PERM_NOK; } @@ -140,6 +144,7 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) { syslog(LOG_DEBUG, "cyrus_work: (%04x) depot_host %s could not be found in dns", log_id, depot_host); snprintf(output, ANSWER_BUFSIZE, DEPOT_DNS_ERROR); + incStatCounter(STAT_CNT_CYRUS_DEPOT_DNS_FAILURE); return SMM_TEMP_NOK; } @@ -237,14 +242,17 @@ int cyrus_work(void *handle, void *work_handle, char *input, char *output) { case SMM_LOCAL_TEMP_NOK: snprintf(output, ANSWER_BUFSIZE, "<%s>", response_text); result = SMM_OK; + incStatCounter(STAT_CNT_CYRUS_RETURNED_TNOK); break; case SMM_LOCAL_PERM_NOK: snprintf(output, ANSWER_BUFSIZE, "<%s>", response_text); result = SMM_OK; + incStatCounter(STAT_CNT_CYRUS_RETURNED_OK); break; case SMM_LOCAL_OK: snprintf(output, ANSWER_BUFSIZE, "<%s>", response_text); result = SMM_OK; + incStatCounter(STAT_CNT_CYRUS_RETURNED_NOK); break; default: snprintf(output, ANSWER_BUFSIZE, response_text); diff --git a/smmapdfw/libsmmapdfw/stats.h b/smmapdfw/libsmmapdfw/stats.h index a6ea017..8fc62d1 100644 --- a/smmapdfw/libsmmapdfw/stats.h +++ b/smmapdfw/libsmmapdfw/stats.h @@ -46,6 +46,13 @@ char *stat_cnt_names[] = { "Verifier: returned NOK", "Verifier: returned TNOK", + "Cyrus: checker", + "Cyrus: illegal input", + "Cyrus: depot dns failure", + "Cyrus: returned OK", + "Cyrus: returned NOK", + "Cyrus: returned TNOK", + "Server: returned OK", "Server: returned TEMP_NOK", "Server: returned PERM_NOK", @@ -63,6 +70,7 @@ char *stat_cnt_names[] = { #define STAT_CNT_NETWORKER_R_THREADS 3 #define STAT_CNT_NETWORKER_THREADS 4 #define STAT_CNT_NETWORKER_THREADS_FAILED 5 + #define STAT_CNT_VERIFIER_CACHE 6 #define STAT_CNT_VERIFIER_WORKER_R_THREADS 7 #define STAT_CNT_VERIFIER_WORKER_THREADS 8 @@ -76,8 +84,14 @@ char *stat_cnt_names[] = { #define STAT_CNT_VERIFIER_RETURNED_NOK 16 #define STAT_CNT_VERIFIER_RETURNED_TNOK 17 +#define STAT_CNT_CYRUS_WORKER 18 +#define STAT_CNT_CYRUS_ILLEGAL_INPUT 19 +#define STAT_CNT_CYRUS_DEPOT_DNS_FAILURE 20 +#define STAT_CNT_CYRUS_RETURNED_OK 21 +#define STAT_CNT_CYRUS_RETURNED_NOK 22 +#define STAT_CNT_CYRUS_RETURNED_TNOK 23 -#define STAT_CNT_OFFSET 17 +#define STAT_CNT_OFFSET 23 #define STAT_CNT_MAXNUM STAT_CNT_OFFSET + SMM_MAX_NUM