summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mail/qmail-tls/Makefile2
-rw-r--r--mail/qmail/Makefile7
-rw-r--r--mail/qmail/files/netqmail-1.06-tls-20160918-freebsd-12.patch49
3 files changed, 55 insertions, 3 deletions
diff --git a/mail/qmail-tls/Makefile b/mail/qmail-tls/Makefile
index bf2df38a3be2..f22907acda76 100644
--- a/mail/qmail-tls/Makefile
+++ b/mail/qmail-tls/Makefile
@@ -3,7 +3,7 @@
PORTNAME= qmail
PORTVERSION= ${QMAIL_VERSION}.${TLS_PATCH_DATE}
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= mail
PKGNAMESUFFIX= -tls
diff --git a/mail/qmail/Makefile b/mail/qmail/Makefile
index aac9aeaf4f79..2ddf31d208f7 100644
--- a/mail/qmail/Makefile
+++ b/mail/qmail/Makefile
@@ -134,6 +134,8 @@ BARRIER_DNS_CNAME= yes
PATCH_DIST_STRIP+= -p1
+.include <bsd.port.options.mk>
+
.if !defined(BARRIER_DNS_PATCH)
# Patch necessary to cope with non-RFC >512 dns entries
# Since AOL has been using those, the problem has skyrocketed from minor to
@@ -168,6 +170,9 @@ PATCHFILES+= netqmail-mysql-${MYSQL_PATCH_VERSION}.patch:mysql
PATCH_SITES+= http://inoa.net/qmail-tls/:tls
TLS_PATCH_NAME= ${QMAIL_PORTNAME}-${QMAIL_VERSION}-tls-${TLS_PATCH_DATE}.patch
PATCHFILES+= ${TLS_PATCH_NAME}:tls
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200000
+EXTRA_PATCHES+= ${FILESDIR}/netqmail-1.06-tls-20160918-freebsd-12.patch
+.endif
.endif
PATCH_SITES+= LOCAL/bdrewery/qmail/:dns,sendmail_flagf,rfc2821,ldap,mysql,tls,quota,blockexec,doublebounce,spf,spf_tls,localtime,qmtpc_outgoingip
@@ -382,8 +387,6 @@ TLS_USES= ssl
NO_MTREE= yes
NO_PREFIX_RMDIR=yes
-.include <bsd.port.options.mk>
-
.if ${ARCH} == "amd64" && !defined(SLAVE_LDAP) \
&& !defined(SLAVE_SPAMCONTROL)
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-amd64
diff --git a/mail/qmail/files/netqmail-1.06-tls-20160918-freebsd-12.patch b/mail/qmail/files/netqmail-1.06-tls-20160918-freebsd-12.patch
new file mode 100644
index 000000000000..5302b1620017
--- /dev/null
+++ b/mail/qmail/files/netqmail-1.06-tls-20160918-freebsd-12.patch
@@ -0,0 +1,49 @@
+--- qmail-remote.c 2019-01-31 00:13:55.812794000 +0100
++++ qmail-remote.c 2019-01-31 00:21:01.440755000 +0100
+@@ -266,8 +266,8 @@
+ {
+ #ifdef TLS
+ /* shouldn't talk to the client unless in an appropriate state */
+- int state = ssl ? ssl->state : SSL_ST_BEFORE;
+- if (state & SSL_ST_OK || (!smtps && state & SSL_ST_BEFORE))
++ OSSL_HANDSHAKE_STATE state = ssl ? SSL_get_state(ssl) : TLS_ST_BEFORE;
++ if (state & TLS_ST_OK || (!smtps && state & TLS_ST_BEFORE))
+ #endif
+ substdio_putsflush(&smtpto,"QUIT\r\n");
+ /* waiting for remote side is just too ridiculous */
+@@ -502,7 +502,7 @@
+ X509_NAME *subj = X509_get_subject_name(peercert);
+ i = X509_NAME_get_index_by_NID(subj, NID_commonName, -1);
+ if (i >= 0) {
+- const ASN1_STRING *s = X509_NAME_get_entry(subj, i)->value;
++ const ASN1_STRING *s = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, i));
+ if (s) { peer.len = s->length; peer.s = s->data; }
+ }
+ if (peer.len <= 0) {
+
+--- qmail-smtpd.c 2019-01-31 00:13:55.815359000 +0100
++++ qmail-smtpd.c 2019-01-31 00:21:01.443177000 +0100
+@@ -557,7 +557,7 @@
+ subj = X509_get_subject_name(peercert);
+ n = X509_NAME_get_index_by_NID(subj, NID_pkcs9_emailAddress, -1);
+ if (n >= 0) {
+- const ASN1_STRING *s = X509_NAME_get_entry(subj, n)->value;
++ const ASN1_STRING *s = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, n));
+ if (s) { email.len = s->length; email.s = s->data; }
+ }
+
+--- ssl_timeoutio.c 2019-01-31 00:13:55.830214000 +0100
++++ ssl_timeoutio.c 2019-01-31 00:21:01.456993000 +0100
+@@ -74,10 +74,10 @@
+
+ SSL_renegotiate(ssl);
+ r = ssl_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
+- if (r <= 0 || ssl->type == SSL_ST_CONNECT) return r;
++ if (r <= 0) return r;
+
+ /* this is for the server only */
+- ssl->state = SSL_ST_ACCEPT;
++ SSL_set_accept_state(ssl);
+ return ssl_timeoutio(SSL_do_handshake, t, rfd, wfd, ssl, NULL, 0);
+ }
+