commit 0a1c0aa333ea4415f00eea875bc6dfe967e2cfda from: Kirill A. Korinsky date: Tue Jan 28 18:17:48 2025 UTC Rename disconnect to session_status commit - c3e8d2568710c9e580b7772942d7a8137ceed077 commit + 0a1c0aa333ea4415f00eea875bc6dfe967e2cfda blob - 42ea7886024833958ca16a5344e7c82178f0163a blob + 87884c2751b47f99d2b50af444e1b2246d4f3ff7 --- opensmtpd.c +++ opensmtpd.c @@ -41,15 +41,15 @@ #define NITEMS(x) (sizeof(x) / sizeof(*x)) -enum disconnect { - DISCONNECT_FALSE = 0, - DISCONNECT_SERVERERROR, - DISCONNECT_SEND +enum osmtpd_session_status { + SESSION_OK = 0, + SESSION_ERROR, + SESSION_DISCONNECTED }; struct osmtpd_session { struct osmtpd_ctx ctx; /* Must remain first element */ - enum disconnect disconnect; + enum osmtpd_session_status status; RB_ENTRY(osmtpd_session) entry; }; @@ -1204,7 +1204,7 @@ osmtpd_newline(struct io *io, int ev, __unused void *a if (oncreatecb_session != NULL) if ((ctx->ctx.local_session = oncreatecb_session(&ctx->ctx)) == NULL) - ctx->disconnect = DISCONNECT_SERVERERROR; + ctx->status = SESSION_ERROR; } ctx->ctx.type = type; ctx->ctx.phase = phase; @@ -1232,7 +1232,7 @@ osmtpd_newline(struct io *io, int ev, __unused void *a osmtpd_errx(1, "Invalid line received: invalid " "token: %s", linedup); line = end + 1; - if (ctx->disconnect == DISCONNECT_SERVERERROR) + if (ctx->status == SESSION_ERROR) osmtpd_filter_disconnect(&ctx->ctx, "internal server error"); } @@ -1261,7 +1261,7 @@ osmtpd_noargs(struct osmtpd_callback *cb, struct osmtp { void (*f)(struct osmtpd_ctx *); - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx); } @@ -1271,7 +1271,7 @@ osmtpd_onearg(struct osmtpd_callback *cb, struct osmtp { void (*f)(struct osmtpd_ctx *, const char *); - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, line); } @@ -1292,7 +1292,7 @@ osmtpd_connect(struct osmtpd_callback *cb, struct osmt osmtpd_addrtoss(address, &ss, 0, linedup); - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, hostname, &ss); } @@ -1308,7 +1308,7 @@ osmtpd_identify(struct osmtpd_callback *cb, struct osm osmtpd_err(1, "strdup"); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, identity); } @@ -1356,7 +1356,7 @@ osmtpd_link_connect(struct osmtpd_callback *cb, struct memcpy(&session->ctx.src, &src, sizeof(session->ctx.src)); memcpy(&session->ctx.dst, &dst, sizeof(session->ctx.dst)); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, rdns, fcrdns, &src, &dst); } @@ -1368,7 +1368,7 @@ osmtpd_link_disconnect(struct osmtpd_callback *cb, void (*f)(struct osmtpd_ctx *); size_t i; - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx); RB_REMOVE(osmtpd_sessions, &osmtpd_sessions, session); @@ -1398,7 +1398,7 @@ osmtpd_link_greeting(struct osmtpd_callback *cb, struc osmtpd_err(1, NULL); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, identity); } @@ -1414,7 +1414,7 @@ osmtpd_link_identify(struct osmtpd_callback *cb, struc osmtpd_err(1, NULL); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, identity); } @@ -1429,7 +1429,7 @@ osmtpd_link_tls(struct osmtpd_callback *cb, struct osm osmtpd_err(1, NULL); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, ciphers); } @@ -1459,7 +1459,7 @@ osmtpd_link_auth(struct osmtpd_callback *cb, struct os osmtpd_err(1, NULL); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, username, s); } @@ -1488,10 +1488,10 @@ osmtpd_tx_begin(struct osmtpd_callback *cb, struct osm if (oncreatecb_message != NULL) { session->ctx.local_message = oncreatecb_message(&session->ctx); if (session->ctx.local_message == NULL) - session->disconnect = DISCONNECT_SERVERERROR; + session->status = SESSION_ERROR; } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, imsgid); } @@ -1536,7 +1536,7 @@ osmtpd_tx_mail(struct osmtpd_callback *cb, struct osmt osmtpd_err(1, NULL); } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid, mailfrom, status); } @@ -1592,7 +1592,7 @@ osmtpd_tx_rcpt(struct osmtpd_callback *cb, struct osmt session->ctx.rcptto[i + 1] = NULL; } - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid, rcptto, status); } @@ -1627,7 +1627,7 @@ osmtpd_tx_envelope(struct osmtpd_callback *cb, struct if (cb->storereport) session->ctx.evpid = evpid; - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid, evpid); } @@ -1654,7 +1654,7 @@ osmtpd_tx_data(struct osmtpd_callback *cb, struct osmt linedup); params = end + 1; - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid, osmtpd_strtostatus(params, linedup)); } @@ -1688,7 +1688,7 @@ osmtpd_tx_commit(struct osmtpd_callback *cb, struct os osmtpd_errx(1, "Invalid line received: invalid msg size: %s", linedup); - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid, msgsz); if (ondeletecb_message != NULL && session->ctx.local_message != NULL) { @@ -1729,7 +1729,7 @@ osmtpd_tx_rollback(struct osmtpd_callback *cb, struct osmtpd_errx(1, "Invalid line received: invalid msgid: %s", linedup); - if ((f = cb->cb) != NULL && session->disconnect == DISCONNECT_FALSE) + if ((f = cb->cb) != NULL && session->status == SESSION_OK) f(&session->ctx, msgid); if (ondeletecb_message != NULL && session->ctx.local_message != NULL) { @@ -1752,7 +1752,7 @@ osmtpd_filter_proceed(struct osmtpd_ctx *ctx) { struct osmtpd_session *session = (struct osmtpd_session *)ctx; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (ctx->version_major == 0 && ctx->version_minor < 5) @@ -1769,7 +1769,7 @@ osmtpd_filter_reject(struct osmtpd_ctx *ctx, int code, struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (code < 200 || code > 599) @@ -1794,7 +1794,7 @@ osmtpd_filter_reject_enh(struct osmtpd_ctx *ctx, int c struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (code < 200 || code > 599) @@ -1826,7 +1826,7 @@ osmtpd_filter_disconnect(struct osmtpd_ctx *ctx, const struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (ctx->version_major == 0 && ctx->version_minor < 5) @@ -1839,7 +1839,7 @@ osmtpd_filter_disconnect(struct osmtpd_ctx *ctx, const io_vprintf(io_stdout, reason, ap); va_end(ap); io_printf(io_stdout, "\n"); - session->disconnect = DISCONNECT_SEND; + session->status = SESSION_DISCONNECTED; } void @@ -1849,7 +1849,7 @@ osmtpd_filter_disconnect_enh(struct osmtpd_ctx *ctx, i struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (class <= 2 || class >= 5) @@ -1870,7 +1870,7 @@ osmtpd_filter_disconnect_enh(struct osmtpd_ctx *ctx, i io_vprintf(io_stdout, reason, ap); va_end(ap); io_printf(io_stdout, "\n"); - session->disconnect = DISCONNECT_SEND; + session->status = SESSION_DISCONNECTED; } void @@ -1879,7 +1879,7 @@ osmtpd_filter_rewrite(struct osmtpd_ctx *ctx, const ch struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (ctx->version_major == 0 && ctx->version_minor < 5) @@ -1900,7 +1900,7 @@ osmtpd_filter_dataline(struct osmtpd_ctx *ctx, const c struct osmtpd_session *session = (struct osmtpd_session *)ctx; va_list ap; - if (session->disconnect == DISCONNECT_SEND) + if (session->status == SESSION_DISCONNECTED) return; if (ctx->version_major == 0 && ctx->version_minor < 5)