commit 2029083fdc575762f4fc67364b8aa67034070023 from: Martijn van Duren date: Thu Oct 15 07:23:09 2020 UTC Add support for osmtpd_register_conf commit - 53b354a9b87cfe0696ef8411dec25f45b7ca6f41 commit + 2029083fdc575762f4fc67364b8aa67034070023 blob - 265ff18659139017ffbe529bc5a264b0a249a2cd blob + a73487daca0c4c739ebea7f7c7267d404b7fcdd1 --- Symbols.list +++ Symbols.list @@ -1,3 +1,4 @@ +osmtpd_register_conf osmtpd_register_filter_connect osmtpd_register_filter_helo osmtpd_register_filter_ehlo blob - 539bac7cc375424390dff3068a761144925e0099 blob + dd68a3c71f89cb879d1ce0683a65d07f7fd8f474 --- opensmtpd.c +++ opensmtpd.c @@ -103,6 +103,7 @@ static void *(*oncreatecb_session)(struct osmtpd_ctx * static void (*ondeletecb_session)(struct osmtpd_ctx *, void *) = NULL; static void *(*oncreatecb_message)(struct osmtpd_ctx *) = NULL; static void (*ondeletecb_message)(struct osmtpd_ctx *, void *) = NULL; +static void (*conf_cb)(const char *, const char *); static struct osmtpd_callback osmtpd_callbacks[] = { { @@ -538,6 +539,12 @@ static int session_timeout = 300; RB_HEAD(osmtpd_sessions, osmtpd_session) osmtpd_sessions = RB_INITIALIZER(NULL); RB_PROTOTYPE_STATIC(osmtpd_sessions, osmtpd_session, entry, osmtpd_session_cmp); + +void +osmtpd_register_conf(void (*cb)(const char *, const char *)) +{ + conf_cb = cb; +} void osmtpd_register_filter_connect(void (*cb)(struct osmtpd_ctx *, const char *, @@ -1034,12 +1041,15 @@ osmtpd_newline(struct io *io, int ev, __unused void *a type = OSMTPD_TYPE_REPORT; else if (strcmp(line, "config") == 0) { line = end; - if (strcmp(line, "ready") == 0) + if (strcmp(line, "ready") == 0) { + conf_cb(NULL, NULL); continue; + } if ((end = strchr(line, '|')) == NULL) osmtpd_errx(1, "Invalid line received: missing " "key: %s", linedup); end++[0] = '\0'; + conf_cb(line, end); if (strcmp(line, "smtp-session-timeout") == 0) { session_timeout = strtonum(end, 0, INT_MAX, &errstr); blob - 26546428978f8cb26810f3fb5620e67180f3ba0f blob + eef32374977851e19c0518f7be2c250d9ff3fa10 --- opensmtpd.h +++ opensmtpd.h @@ -107,6 +107,7 @@ struct osmtpd_ctx { void *local_message; }; +void osmtpd_register_conf(void (*)(const char *, const char *)); void osmtpd_register_filter_connect(void (*)(struct osmtpd_ctx *, const char *, struct sockaddr_storage *)); void osmtpd_register_filter_helo(void (*)(struct osmtpd_ctx *, const char *)); blob - 3d7c908e43d641cb0dcddbee5df35d0ac5910b46 blob + 97c9f92d6b8fd947359f10a616abc86fb7de7a87 --- shlib_version +++ shlib_version @@ -1,2 +1,2 @@ major=0 -minor=1 +minor=0