aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Faurot <eric@openbsd.org>2016-06-29 08:51:15 +0200
committerEric Faurot <eric@openbsd.org>2016-06-29 08:51:15 +0200
commit78530ed774bacf2e4baba9463e89c0fe4ac67d20 (patch)
tree03a225fc4c602c1b8dd60d9ec833226bf09f5d4d
parentmv resolve out of rspamd.c to temporary file (diff)
downloadOpenSMTPD-extras-78530ed774bacf2e4baba9463e89c0fe4ac67d20.tar.xz
OpenSMTPD-extras-78530ed774bacf2e4baba9463e89c0fe4ac67d20.zip
Properly handle BEGIN COMMIT/ROLLBACK event sequences.
Rename some API functions. Bump API version.
-rw-r--r--api/filter_api.c137
-rw-r--r--api/smtpd-api.h19
-rw-r--r--extras/filters/filter-clamav/filter_clamav.c8
-rw-r--r--extras/filters/filter-dkim-signer/filter_dkim_signer.c8
-rw-r--r--extras/filters/filter-lua/filter_lua.c46
-rw-r--r--extras/filters/filter-perl/filter_perl.c30
-rw-r--r--extras/filters/filter-python/filter_python.c53
-rw-r--r--extras/filters/filter-regex/filter_regex.c8
-rw-r--r--extras/filters/filter-spamassassin/filter_spamassassin.c8
-rw-r--r--extras/filters/filter-stub/filter_stub.c19
-rw-r--r--extras/filters/filter-trace/filter_trace.c19
11 files changed, 216 insertions, 139 deletions
diff --git a/api/filter_api.c b/api/filter_api.c
index e932928..13adaad 100644
--- a/api/filter_api.c
+++ b/api/filter_api.c
@@ -112,8 +112,9 @@ static struct filter_internals {
void (*disconnect)(uint64_t);
void (*reset)(uint64_t);
- void (*commit)(uint64_t);
- void (*rollback)(uint64_t);
+ void (*tx_begin)(uint64_t);
+ void (*tx_commit)(uint64_t);
+ void (*tx_rollback)(uint64_t);
} cb;
void *(*session_allocator)(uint64_t);
@@ -138,8 +139,9 @@ static void filter_dispatch_helo(uint64_t, const char *);
static void filter_dispatch_mail(uint64_t, struct mailaddr *);
static void filter_dispatch_rcpt(uint64_t, struct mailaddr *);
static void filter_dispatch_reset(uint64_t);
-static void filter_dispatch_commit(uint64_t);
-static void filter_dispatch_rollback(uint64_t);
+static void filter_dispatch_tx_begin(uint64_t);
+static void filter_dispatch_tx_commit(uint64_t);
+static void filter_dispatch_tx_rollback(uint64_t);
static void filter_dispatch_disconnect(uint64_t);
static void filter_trigger_eom(struct filter_session *);
@@ -276,12 +278,6 @@ filter_dispatch(struct mproc *p, struct imsg *imsg)
case EVENT_DISCONNECT:
filter_dispatch_disconnect(id);
s = tree_xget(&sessions, id);
- if (fi.transaction_destructor) {
- if (s->transaction) {
- fi.transaction_destructor(s->transaction);
- s->transaction = NULL;
- }
- }
if (fi.session_destructor) {
if (s->session)
fi.session_destructor(s->session);
@@ -294,36 +290,21 @@ filter_dispatch(struct mproc *p, struct imsg *imsg)
case EVENT_RESET:
filter_dispatch_reset(id);
s = tree_xget(&sessions, id);
- if (fi.transaction_destructor) {
- if (s->transaction) {
- fi.transaction_destructor(s->transaction);
- s->transaction = NULL;
- }
- }
if (s->data_buffer)
data_buffered_release(s);
break;
- case EVENT_COMMIT:
- filter_dispatch_commit(id);
+ case EVENT_TX_BEGIN:
+ filter_dispatch_tx_begin(id);
+ break;
+ case EVENT_TX_COMMIT:
+ filter_dispatch_tx_commit(id);
s = tree_xget(&sessions, id);
- if (fi.transaction_destructor) {
- if (s->transaction) {
- fi.transaction_destructor(s->transaction);
- s->transaction = NULL;
- }
- }
if (s->data_buffer)
data_buffered_release(s);
break;
- case EVENT_ROLLBACK:
- filter_dispatch_rollback(id);
+ case EVENT_TX_ROLLBACK:
+ filter_dispatch_tx_rollback(id);
s = tree_xget(&sessions, id);
- if (fi.transaction_destructor) {
- if (s->transaction) {
- fi.transaction_destructor(s->transaction);
- s->transaction = NULL;
- }
- }
if (s->data_buffer)
data_buffered_release(s);
break;
@@ -356,12 +337,6 @@ filter_dispatch(struct mproc *p, struct imsg *imsg)
case QUERY_MAIL:
m_get_mailaddr(&m, &maddr);
m_end(&m);
-
- if (fi.transaction_allocator) {
- s = tree_xget(&sessions, id);
- s->transaction = fi.transaction_allocator(id);
- }
-
filter_register_query(id, qid, type);
filter_dispatch_mail(id, &maddr);
break;
@@ -481,13 +456,6 @@ filter_dispatch_helo(uint64_t id, const char *helo)
static void
filter_dispatch_mail(uint64_t id, struct mailaddr *mail)
{
- struct filter_session *s;
-
- s = tree_xget(&sessions, id);
- if (s->tx)
- fatalx("transaction already started");
- s->tx = 1;
-
if (fi.cb.mail)
fi.cb.mail(id, mail);
else
@@ -517,17 +485,34 @@ filter_dispatch_reset(uint64_t id)
{
if (fi.cb.reset)
fi.cb.reset(id);
- filter_dispatch_rollback(id);
}
static void
-filter_dispatch_commit(uint64_t id)
+filter_dispatch_tx_begin(uint64_t id)
+{
+ struct filter_session *s;
+
+ s = tree_xget(&sessions, id);
+ if (s->tx)
+ fatalx("tx-begin: session %016"PRIx64" in transaction", id);
+
+ s->tx = 1;
+
+ if (fi.transaction_allocator)
+ s->transaction = fi.transaction_allocator(id);
+
+ if (fi.cb.tx_begin)
+ fi.cb.tx_begin(id);
+}
+
+static void
+filter_dispatch_tx_commit(uint64_t id)
{
struct filter_session *s;
s = tree_xget(&sessions, id);
if (s->tx == 0)
- fatalx("commit: session %016"PRIx64" not in transaction", id);
+ fatalx("tx-commit: session %016"PRIx64" not in transaction", id);
s->tx = 0;
io_clear(&s->pipe.oev);
@@ -535,18 +520,23 @@ filter_dispatch_commit(uint64_t id)
io_clear(&s->pipe.iev);
iobuf_clear(&s->pipe.ibuf);
- if (fi.cb.commit)
- fi.cb.commit(id);
+ if (fi.cb.tx_commit)
+ fi.cb.tx_commit(id);
+
+ if (fi.transaction_destructor && s->transaction) {
+ fi.transaction_destructor(s->transaction);
+ s->transaction = NULL;
+ }
}
static void
-filter_dispatch_rollback(uint64_t id)
+filter_dispatch_tx_rollback(uint64_t id)
{
struct filter_session *s;
s = tree_xget(&sessions, id);
if (s->tx == 0)
- return;
+ fatalx("tx-rollback: session %016"PRIx64" not in transaction", id);
s->tx = 0;
io_clear(&s->pipe.oev);
@@ -554,16 +544,18 @@ filter_dispatch_rollback(uint64_t id)
io_clear(&s->pipe.iev);
iobuf_clear(&s->pipe.ibuf);
- if (fi.cb.rollback)
- fi.cb.rollback(id);
+ if (fi.cb.tx_rollback)
+ fi.cb.tx_rollback(id);
+
+ if (fi.transaction_destructor && s->transaction) {
+ fi.transaction_destructor(s->transaction);
+ s->transaction = NULL;
+ }
}
static void
filter_dispatch_disconnect(uint64_t id)
{
-
- filter_dispatch_rollback(id);
-
if (fi.cb.disconnect)
fi.cb.disconnect(id);
}
@@ -776,8 +768,9 @@ hook_to_str(int hook)
CASE(HOOK_EOM);
CASE(HOOK_RESET);
CASE(HOOK_DISCONNECT);
- CASE(HOOK_COMMIT);
- CASE(HOOK_ROLLBACK);
+ CASE(HOOK_TX_BEGIN);
+ CASE(HOOK_TX_COMMIT);
+ CASE(HOOK_TX_ROLLBACK);
CASE(HOOK_DATALINE);
default:
return ("HOOK_???");
@@ -807,8 +800,9 @@ event_to_str(int event)
CASE(EVENT_CONNECT);
CASE(EVENT_RESET);
CASE(EVENT_DISCONNECT);
- CASE(EVENT_COMMIT);
- CASE(EVENT_ROLLBACK);
+ CASE(EVENT_TX_BEGIN);
+ CASE(EVENT_TX_COMMIT);
+ CASE(EVENT_TX_ROLLBACK);
default:
return ("EVENT_???");
}
@@ -1039,21 +1033,30 @@ filter_api_on_disconnect(void(*cb)(uint64_t))
}
void
-filter_api_on_commit(void(*cb)(uint64_t))
+filter_api_on_tx_begin(void(*cb)(uint64_t))
+{
+ filter_api_init();
+
+ fi.hooks |= HOOK_TX_BEGIN;
+ fi.cb.tx_begin = cb;
+}
+
+void
+filter_api_on_tx_commit(void(*cb)(uint64_t))
{
filter_api_init();
- fi.hooks |= HOOK_COMMIT;
- fi.cb.commit = cb;
+ fi.hooks |= HOOK_TX_COMMIT;
+ fi.cb.tx_commit = cb;
}
void
-filter_api_on_rollback(void(*cb)(uint64_t))
+filter_api_on_tx_rollback(void(*cb)(uint64_t))
{
filter_api_init();
- fi.hooks |= HOOK_ROLLBACK;
- fi.cb.rollback = cb;
+ fi.hooks |= HOOK_TX_ROLLBACK;
+ fi.cb.tx_rollback = cb;
}
void
diff --git a/api/smtpd-api.h b/api/smtpd-api.h
index 8c6c7af..103320e 100644
--- a/api/smtpd-api.h
+++ b/api/smtpd-api.h
@@ -36,7 +36,7 @@
#include "log.h"
#include "rfc2822.h"
-#define FILTER_API_VERSION 50
+#define FILTER_API_VERSION 51
enum blockmodes {
BM_NORMAL,
@@ -113,8 +113,9 @@ enum filter_event_type {
EVENT_CONNECT,
EVENT_RESET,
EVENT_DISCONNECT,
- EVENT_COMMIT,
- EVENT_ROLLBACK,
+ EVENT_TX_BEGIN,
+ EVENT_TX_COMMIT,
+ EVENT_TX_ROLLBACK,
};
/* XXX - server side requires mfa_session.c update on filter_hook changes */
@@ -138,9 +139,10 @@ enum filter_hook_type {
HOOK_EOM = 1 << 5,
HOOK_RESET = 1 << 6,
HOOK_DISCONNECT = 1 << 7,
- HOOK_COMMIT = 1 << 8,
- HOOK_ROLLBACK = 1 << 9,
- HOOK_DATALINE = 1 << 10,
+ HOOK_TX_BEGIN = 1 << 8,
+ HOOK_TX_COMMIT = 1 << 9,
+ HOOK_TX_ROLLBACK = 1 << 10,
+ HOOK_DATALINE = 1 << 11,
};
struct filter_connect {
@@ -419,8 +421,9 @@ void filter_api_on_dataline(void(*)(uint64_t, const char *));
void filter_api_on_eom(int(*)(uint64_t, size_t));
void filter_api_on_reset(void(*)(uint64_t));
void filter_api_on_disconnect(void(*)(uint64_t));
-void filter_api_on_commit(void(*)(uint64_t));
-void filter_api_on_rollback(void(*)(uint64_t));
+void filter_api_on_tx_begin(void(*)(uint64_t));
+void filter_api_on_tx_commit(void(*)(uint64_t));
+void filter_api_on_tx_rollback(void(*)(uint64_t));
const char *proc_name(enum smtp_proc_type);
const char *imsg_to_str(int);
diff --git a/extras/filters/filter-clamav/filter_clamav.c b/extras/filters/filter-clamav/filter_clamav.c
index afe9f1a..7f505d2 100644
--- a/extras/filters/filter-clamav/filter_clamav.c
+++ b/extras/filters/filter-clamav/filter_clamav.c
@@ -203,14 +203,14 @@ clamav_on_eom(uint64_t id, size_t size)
}
static void
-clamav_on_commit(uint64_t id)
+clamav_on_tx_commit(uint64_t id)
{
clamav_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
}
static void
-clamav_on_rollback(uint64_t id)
+clamav_on_tx_rollback(uint64_t id)
{
clamav_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
@@ -291,8 +291,8 @@ main(int argc, char **argv)
filter_api_on_data(clamav_on_data);
filter_api_on_dataline(clamav_on_dataline);
filter_api_on_eom(clamav_on_eom);
- filter_api_on_commit(clamav_on_commit);
- filter_api_on_rollback(clamav_on_rollback);
+ filter_api_on_tx_commit(clamav_on_tx_commit);
+ filter_api_on_tx_rollback(clamav_on_tx_rollback);
filter_api_loop();
log_debug("debug: exiting");
diff --git a/extras/filters/filter-dkim-signer/filter_dkim_signer.c b/extras/filters/filter-dkim-signer/filter_dkim_signer.c
index acbe918..2707ad4 100644
--- a/extras/filters/filter-dkim-signer/filter_dkim_signer.c
+++ b/extras/filters/filter-dkim-signer/filter_dkim_signer.c
@@ -226,14 +226,14 @@ done:
}
static void
-dkim_signer_on_commit(uint64_t id)
+dkim_signer_on_tx_commit(uint64_t id)
{
dkim_signer_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
}
static void
-dkim_signer_on_rollback(uint64_t id)
+dkim_signer_on_tx_rollback(uint64_t id)
{
dkim_signer_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
@@ -309,8 +309,8 @@ main(int argc, char **argv)
filter_api_on_data(dkim_signer_on_data);
filter_api_on_dataline(dkim_signer_on_dataline);
filter_api_on_eom(dkim_signer_on_eom);
- filter_api_on_commit(dkim_signer_on_commit);
- filter_api_on_rollback(dkim_signer_on_rollback);
+ filter_api_on_tx_commit(dkim_signer_on_tx_commit);
+ filter_api_on_tx_rollback(dkim_signer_on_tx_rollback);
if (c)
filter_api_set_chroot(c);
if (C)
diff --git a/extras/filters/filter-lua/filter_lua.c b/extras/filters/filter-lua/filter_lua.c
index e4c1324..c2c8781 100644
--- a/extras/filters/filter-lua/filter_lua.c
+++ b/extras/filters/filter-lua/filter_lua.c
@@ -277,32 +277,48 @@ on_eom(uint64_t id, size_t size)
}
static void
-on_commit(uint64_t id)
+on_tx_begin(uint64_t id)
{
char s_id[ID_STR_SZ];
(void)snprintf(s_id, sizeof(s_id), "%016"PRIx64"", id);
- lua_getglobal(L, "on_commit");
+ lua_getglobal(L, "on_tx_begin");
lua_pushstring(L, s_id);
if (lua_pcall(L, 1, 0, 0)) {
- log_warnx("warn: on_commit: %s",
+ log_warnx("warn: on_tx_begin: %s",
lua_tostring(L, -1));
exit(1);
}
}
static void
-on_rollback(uint64_t id)
+on_tx_commit(uint64_t id)
{
char s_id[ID_STR_SZ];
(void)snprintf(s_id, sizeof(s_id), "%016"PRIx64"", id);
- lua_getglobal(L, "on_rollback");
+ lua_getglobal(L, "on_tx_commit");
lua_pushstring(L, s_id);
if (lua_pcall(L, 1, 0, 0)) {
- log_warnx("warn: on_rollback: %s",
+ log_warnx("warn: on_tx_commit: %s",
+ lua_tostring(L, -1));
+ exit(1);
+ }
+}
+
+static void
+on_tx_rollback(uint64_t id)
+{
+ char s_id[ID_STR_SZ];
+
+ (void)snprintf(s_id, sizeof(s_id), "%016"PRIx64"", id);
+ lua_getglobal(L, "on_tx_rollback");
+ lua_pushstring(L, s_id);
+
+ if (lua_pcall(L, 1, 0, 0)) {
+ log_warnx("warn: on_tx_rollback: %s",
lua_tostring(L, -1));
exit(1);
}
@@ -429,16 +445,22 @@ main(int argc, char **argv)
filter_api_on_eom(on_eom);
}
- lua_getglobal(L, "on_commit");
+ lua_getglobal(L, "on_tx_begin");
+ if (lua_isfunction(L, 1)) {
+ log_debug("debug: on_tx_begin is present");
+ filter_api_on_tx_begin(on_tx_begin);
+ }
+
+ lua_getglobal(L, "on_tx_commit");
if (lua_isfunction(L, 1)) {
- log_debug("debug: on_commit is present");
- filter_api_on_commit(on_commit);
+ log_debug("debug: on_tx_commit is present");
+ filter_api_on_tx_commit(on_tx_commit);
}
- lua_getglobal(L, "on_rollback");
+ lua_getglobal(L, "on_tx_rollback");
if (lua_isfunction(L, 1)) {
- log_debug("debug: on_rollback is present");
- filter_api_on_rollback(on_rollback);
+ log_debug("debug: on_tx_rollback is present");
+ filter_api_on_tx_rollback(on_tx_rollback);
}
lua_getglobal(L, "on_disconnect");
diff --git a/extras/filters/filter-perl/filter_perl.c b/extras/filters/filter-perl/filter_perl.c
index f52d056..e58d004 100644
--- a/extras/filters/filter-perl/filter_perl.c
+++ b/extras/filters/filter-perl/filter_perl.c
@@ -38,8 +38,9 @@ static CV *pl_on_mail;
static CV *pl_on_rcpt;
static CV *pl_on_data;
static CV *pl_on_eom;
-static CV *pl_on_commit;
-static CV *pl_on_rollback;
+static CV *pl_on_tx_begin;
+static CV *pl_on_tx_commit;
+static CV *pl_on_tx_rollback;
static CV *pl_on_dataline;
static CV *pl_on_disconnect;
@@ -187,16 +188,23 @@ on_eom(uint64_t id, size_t size)
}
static void
-on_commit(uint64_t id)
+on_tx_begin(uint64_t id)
{
- call_sub_sv((SV *)pl_on_commit, "%i", id);
+ call_sub_sv((SV *)pl_on_tx_begin, "%i", id);
return;
}
static void
-on_rollback(uint64_t id)
+on_tx_commit(uint64_t id)
{
- call_sub_sv((SV *)pl_on_rollback, "%i", id);
+ call_sub_sv((SV *)pl_on_tx_commit, "%i", id);
+ return;
+}
+
+static void
+on_tx_rollback(uint64_t id)
+{
+ call_sub_sv((SV *)pl_on_tx_rollback, "%i", id);
return;
}
@@ -272,10 +280,12 @@ main(int argc, char **argv)
filter_api_on_data(on_data);
if ((pl_on_eom = perl_get_cv("on_eom", FALSE)))
filter_api_on_eom(on_eom);
- if ((pl_on_commit = perl_get_cv("on_commit", FALSE)))
- filter_api_on_commit(on_commit);
- if ((pl_on_rollback = perl_get_cv("on_rollback", FALSE)))
- filter_api_on_rollback(on_rollback);
+ if ((pl_on_tx_begin = perl_get_cv("on_tx_begin", FALSE)))
+ filter_api_on_tx_begin(on_tx_begin);
+ if ((pl_on_tx_commit = perl_get_cv("on_tx_commit", FALSE)))
+ filter_api_on_tx_commit(on_tx_commit);
+ if ((pl_on_tx_rollback = perl_get_cv("on_tx_rollback", FALSE)))
+ filter_api_on_rollback(on_tx_rollback);
if ((pl_on_dataline = perl_get_cv("on_dataline", FALSE)))
filter_api_on_dataline(on_dataline);
if ((pl_on_disconnect = perl_get_cv("on_disconnect", FALSE)))
diff --git a/extras/filters/filter-python/filter_python.c b/extras/filters/filter-python/filter_python.c
index 14c4457..33c1f4b 100644
--- a/extras/filters/filter-python/filter_python.c
+++ b/extras/filters/filter-python/filter_python.c
@@ -40,8 +40,9 @@ static PyObject *py_on_data;
static PyObject *py_on_eom;
static PyObject *py_on_dataline;
-static PyObject *py_on_commit;
-static PyObject *py_on_rollback;
+static PyObject *py_on_tx_begin;
+static PyObject *py_on_tx_commit;
+static PyObject *py_on_tx_rollback;
static PyObject *py_on_disconnect;
@@ -277,7 +278,7 @@ on_eom(uint64_t id, size_t sz)
}
static void
-on_commit(uint64_t id)
+on_tx_begin(uint64_t id)
{
PyObject *py_args;
PyObject *py_ret;
@@ -286,18 +287,18 @@ on_commit(uint64_t id)
py_args = PyTuple_New(1);
py_id = PyLong_FromUnsignedLongLong(id);
PyTuple_SetItem(py_args, 0, py_id);
- py_ret = PyObject_CallObject(py_on_commit, py_args);
+ py_ret = PyObject_CallObject(py_on_tx_begin, py_args);
Py_DECREF(py_args);
if (py_ret == NULL) {
PyErr_Print();
- log_warnx("warn: on_commit: handler failed");
+ log_warnx("warn: on_tx_begin: handler failed");
exit(1);
}
}
static void
-on_rollback(uint64_t id)
+on_tx_commit(uint64_t id)
{
PyObject *py_args;
PyObject *py_ret;
@@ -306,12 +307,32 @@ on_rollback(uint64_t id)
py_args = PyTuple_New(1);
py_id = PyLong_FromUnsignedLongLong(id);
PyTuple_SetItem(py_args, 0, py_id);
- py_ret = PyObject_CallObject(py_on_rollback, py_args);
+ py_ret = PyObject_CallObject(py_on_tx_commit, py_args);
Py_DECREF(py_args);
if (py_ret == NULL) {
PyErr_Print();
- log_warnx("warn: on_rollback: handler failed");
+ log_warnx("warn: on_tx_commit: handler failed");
+ exit(1);
+ }
+}
+
+static void
+on_tx_rollback(uint64_t id)
+{
+ PyObject *py_args;
+ PyObject *py_ret;
+ PyObject *py_id;
+
+ py_args = PyTuple_New(1);
+ py_id = PyLong_FromUnsignedLongLong(id);
+ PyTuple_SetItem(py_args, 0, py_id);
+ py_ret = PyObject_CallObject(py_on_tx_rollback, py_args);
+ Py_DECREF(py_args);
+
+ if (py_ret == NULL) {
+ PyErr_Print();
+ log_warnx("warn: on_tx_rollback: handler failed");
exit(1);
}
}
@@ -485,13 +506,17 @@ main(int argc, char **argv)
if (py_on_eom && PyCallable_Check(py_on_eom))
filter_api_on_eom(on_eom);
- py_on_commit = PyObject_GetAttrString(module, "on_commit");
- if (py_on_commit && PyCallable_Check(py_on_commit))
- filter_api_on_commit(on_commit);
+ py_on_tx_begin = PyObject_GetAttrString(module, "on_tx_begin");
+ if (py_on_tx_begin && PyCallable_Check(py_on_tx_begin))
+ filter_api_on_tx_begin(on_tx_begin);
+
+ py_on_tx_commit = PyObject_GetAttrString(module, "on_tx_commit");
+ if (py_on_tx_commit && PyCallable_Check(py_on_tx_commit))
+ filter_api_on_tx_commit(on_tx_commit);
- py_on_rollback = PyObject_GetAttrString(module, "on_rollback");
- if (py_on_rollback && PyCallable_Check(py_on_rollback))
- filter_api_on_rollback(on_rollback);
+ py_on_tx_rollback = PyObject_GetAttrString(module, "on_tx_rollback");
+ if (py_on_tx_rollback && PyCallable_Check(py_on_tx_rollback))
+ filter_api_on_tx_rollback(on_tx_rollback);
py_on_dataline = PyObject_GetAttrString(module, "on_dataline");
if (py_on_dataline && PyCallable_Check(py_on_dataline))
diff --git a/extras/filters/filter-regex/filter_regex.c b/extras/filters/filter-regex/filter_regex.c
index 8106cbc..02fd36e 100644
--- a/extras/filters/filter-regex/filter_regex.c
+++ b/extras/filters/filter-regex/filter_regex.c
@@ -229,14 +229,14 @@ regex_on_eom(uint64_t id, size_t size)
}
static void
-regex_on_commit(uint64_t id)
+regex_on_tx_commit(uint64_t id)
{
free(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
}
static void
-regex_on_rollback(uint64_t id)
+regex_on_tx_rollback(uint64_t id)
{
free(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
@@ -291,8 +291,8 @@ main(int argc, char **argv)
filter_api_on_rcpt(regex_on_rcpt);
filter_api_on_dataline(regex_on_dataline);
filter_api_on_eom(regex_on_eom);
- filter_api_on_commit(regex_on_commit);
- filter_api_on_rollback(regex_on_rollback);
+ filter_api_on_tx_commit(regex_on_tx_commit);
+ filter_api_on_tx_rollback(regex_on_tx_rollback);
filter_api_loop();
regex_clear();
diff --git a/extras/filters/filter-spamassassin/filter_spamassassin.c b/extras/filters/filter-spamassassin/filter_spamassassin.c
index d765b2f..264aa20 100644
--- a/extras/filters/filter-spamassassin/filter_spamassassin.c
+++ b/extras/filters/filter-spamassassin/filter_spamassassin.c
@@ -250,14 +250,14 @@ spamassassin_on_eom(uint64_t id, size_t size)
}
static void
-spamassassin_on_commit(uint64_t id)
+spamassassin_on_tx_commit(uint64_t id)
{
spamassassin_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
}
static void
-spamassassin_on_rollback(uint64_t id)
+spamassassin_on_tx_rollback(uint64_t id)
{
spamassassin_clear(filter_api_get_udata(id));
filter_api_set_udata(id, NULL);
@@ -358,8 +358,8 @@ main(int argc, char **argv)
filter_api_on_data(spamassassin_on_data);
filter_api_on_dataline(spamassassin_on_dataline);
filter_api_on_eom(spamassassin_on_eom);
- filter_api_on_commit(spamassassin_on_commit);
- filter_api_on_rollback(spamassassin_on_rollback);
+ filter_api_on_tx_commit(spamassassin_on_tx_commit);
+ filter_api_on_tx_rollback(spamassassin_on_tx_rollback);
filter_api_loop();
log_debug("debug: exiting");
diff --git a/extras/filters/filter-stub/filter_stub.c b/extras/filters/filter-stub/filter_stub.c
index dd7e0af..5b6c240 100644
--- a/extras/filters/filter-stub/filter_stub.c
+++ b/extras/filters/filter-stub/filter_stub.c
@@ -80,15 +80,21 @@ on_reset(uint64_t id)
}
static void
-on_commit(uint64_t id)
+on_tx_begin(uint64_t id)
{
- log_debug("debug: on_commit");
+ log_debug("debug: on_tx_begin");
}
static void
-on_rollback(uint64_t id)
+on_tx_commit(uint64_t id)
{
- log_debug("debug: on_rollback");
+ log_debug("debug: on_tx_commit");
+}
+
+static void
+on_tx_rollback(uint64_t id)
+{
+ log_debug("debug: on_tx_rollback");
}
static void
@@ -134,8 +140,9 @@ main(int argc, char **argv)
filter_api_on_reset(on_reset);
filter_api_on_eom(on_eom);
filter_api_on_dataline(on_dataline);
- filter_api_on_commit(on_commit);
- filter_api_on_rollback(on_rollback);
+ filter_api_on_tx_begin(on_tx_begin);
+ filter_api_on_tx_commit(on_tx_commit);
+ filter_api_on_tx_rollback(on_tx_rollback);
filter_api_on_disconnect(on_disconnect);
filter_api_loop();
diff --git a/extras/filters/filter-trace/filter_trace.c b/extras/filters/filter-trace/filter_trace.c
index 15e4226..02918e1 100644
--- a/extras/filters/filter-trace/filter_trace.c
+++ b/extras/filters/filter-trace/filter_trace.c
@@ -90,15 +90,21 @@ on_disconnect(uint64_t id)
}
static void
-on_commit(uint64_t id)
+on_tx_begin(uint64_t id)
{
- log_info("info: session %016"PRIx64": on_commit", id);
+ log_info("info: session %016"PRIx64": on_tx_begin", id);
}
static void
-on_rollback(uint64_t id)
+on_tx_commit(uint64_t id)
{
- log_info("info: session %016"PRIx64": on_rollback", id);
+ log_info("info: session %016"PRIx64": on_tx_commit", id);
+}
+
+static void
+on_tx_rollback(uint64_t id)
+{
+ log_info("info: session %016"PRIx64": on_tx_rollback", id);
}
int
@@ -144,8 +150,9 @@ main(int argc, char **argv)
filter_api_on_reset(on_reset);
filter_api_on_disconnect(on_disconnect);
- filter_api_on_commit(on_commit);
- filter_api_on_rollback(on_rollback);
+ filter_api_on_tx_begin(on_tx_begin);
+ filter_api_on_tx_commit(on_tx_commit);
+ filter_api_on_tx_rollback(on_tx_rollback);
filter_api_loop();