diff options
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/smtpd/smtp.c | 5 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtp_session.c | 6 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtpctl.c | 10 | ||||
-rw-r--r-- | usr.sbin/smtpd/smtpd.h | 7 | ||||
-rw-r--r-- | usr.sbin/smtpd/ssl.c | 20 |
5 files changed, 40 insertions, 8 deletions
diff --git a/usr.sbin/smtpd/smtp.c b/usr.sbin/smtpd/smtp.c index 6693aee04ef..ba45283d835 100644 --- a/usr.sbin/smtpd/smtp.c +++ b/usr.sbin/smtpd/smtp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp.c,v 1.21 2009/01/30 21:22:33 gilles Exp $ */ +/* $OpenBSD: smtp.c,v 1.22 2009/01/30 21:40:21 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org> @@ -724,8 +724,9 @@ smtp_accept(int fd, short event, void *p) event_add(&l->ev, NULL); s_smtp.sessions++; + s_smtp.sessions_active++; - if (s_smtp.sessions == s->s_env->sc_maxconn) + if (s_smtp.sessions_active == s->s_env->sc_maxconn) event_del(&l->ev); } diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c index ee9df424fcf..7d890bf93ab 100644 --- a/usr.sbin/smtpd/smtp_session.c +++ b/usr.sbin/smtpd/smtp_session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtp_session.c,v 1.50 2009/01/30 21:22:33 gilles Exp $ */ +/* $OpenBSD: smtp_session.c,v 1.51 2009/01/30 21:40:21 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org> @@ -905,8 +905,8 @@ session_destroy(struct session *s) log_debug("session_destroy: killing client: %p", s); close(s->s_fd); - s_smtp.sessions--; - if (s_smtp.sessions < s->s_env->sc_maxconn) + s_smtp.sessions_active--; + if (s_smtp.sessions_active < s->s_env->sc_maxconn) event_add(&s->s_l->ev, NULL); if (s->s_bev != NULL) { diff --git a/usr.sbin/smtpd/smtpctl.c b/usr.sbin/smtpd/smtpctl.c index c165c22590c..34d49d3a9ef 100644 --- a/usr.sbin/smtpd/smtpctl.c +++ b/usr.sbin/smtpd/smtpctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: smtpctl.c,v 1.10 2009/01/30 21:22:33 gilles Exp $ */ +/* $OpenBSD: smtpctl.c,v 1.11 2009/01/30 21:40:21 gilles Exp $ */ /* * Copyright (c) 2006 Pierre-Yves Ritschard <pyr@openbsd.org> @@ -273,9 +273,17 @@ show_stats_output(struct imsg *imsg) return (0); printf("parent.uptime = %d\n", time(NULL) - s_parent.start); + printf("queue.inserts = %zd\n", s_queue.inserts); + printf("runner.active = %zd\n", s_runner.active); + printf("smtp.sessions = %zd\n", s_smtp.sessions); + printf("smtp.sessions.active = %zd\n", s_smtp.sessions_active); + printf("smtp.sessions.ssmtp = %zd\n", s_smtp.ssmtp); + printf("smtp.sessions.ssmtp.active = %zd\n", s_smtp.ssmtp_active); + printf("smtp.sessions.starttls = %zd\n", s_smtp.starttls); + printf("smtp.sessions.starttls.active = %zd\n", s_smtp.starttls_active); return (1); } diff --git a/usr.sbin/smtpd/smtpd.h b/usr.sbin/smtpd/smtpd.h index fb9924fe721..da097f01504 100644 --- a/usr.sbin/smtpd/smtpd.h +++ b/usr.sbin/smtpd/smtpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: smtpd.h,v 1.66 2009/01/30 21:22:33 gilles Exp $ */ +/* $OpenBSD: smtpd.h,v 1.67 2009/01/30 21:40:21 gilles Exp $ */ /* * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org> @@ -656,8 +656,13 @@ struct s_runner { struct s_smtp { size_t sessions; + size_t sessions_active; + size_t ssmtp; + size_t ssmtp_active; + size_t starttls; + size_t starttls_active; }; struct stats { diff --git a/usr.sbin/smtpd/ssl.c b/usr.sbin/smtpd/ssl.c index 377bf726e1a..4cf4b88c672 100644 --- a/usr.sbin/smtpd/ssl.c +++ b/usr.sbin/smtpd/ssl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl.c,v 1.7 2009/01/29 14:25:55 gilles Exp $ */ +/* $OpenBSD: ssl.c,v 1.8 2009/01/30 21:40:21 gilles Exp $ */ /* * Copyright (c) 2008 Pierre-Yves Ritschard <pyr@openbsd.org> @@ -55,6 +55,8 @@ void ssl_client_init(struct session *); extern void bufferevent_read_pressure_cb(struct evbuffer *, size_t, size_t, void *); +extern struct s_smtp s_smtp; + void ssl_connect(int fd, short event, void *p) { @@ -506,6 +508,16 @@ ssl_session_accept(int fd, short event, void *p) log_info("ssl_session_accept: accepted ssl client"); s->s_flags |= F_SECURE; + + if (s->s_l->flags & F_SSMTP) { + s_smtp.ssmtp++; + s_smtp.ssmtp_active++; + } + if (s->s_l->flags & F_STARTTLS) { + s_smtp.starttls++; + s_smtp.starttls_active++; + } + session_pickup(s, NULL); return; retry: @@ -582,5 +594,11 @@ ssl_client_init(struct session *s) void ssl_session_destroy(struct session *s) { + if (s->s_l->flags & F_SSMTP) { + s_smtp.ssmtp_active--; + } + if (s->s_l->flags & F_STARTTLS) { + s_smtp.starttls_active--; + } SSL_free(s->s_ssl); } |