Page MenuHomeFreeBSD

D11285.id30684.diff
No OneTemporary

D11285.id30684.diff

Index: devel/apr1/Makefile
===================================================================
--- devel/apr1/Makefile
+++ devel/apr1/Makefile
@@ -3,7 +3,6 @@
PORTNAME= apr
PORTVERSION= ${APR_VERSION}.${APU_VERSION}
-PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= APACHE/apr
DISTFILES= apr-${APR_VERSION}.tar.gz \
@@ -20,21 +19,23 @@
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
-APR_VERSION= 1.5.2
-APU_VERSION= 1.5.4
+APR_VERSION= 1.6.2
+APU_VERSION= 1.6.0
CPE_VENDOR= apache
CPE_PRODUCT= apr-util
CPE_VERSION= ${APU_VERSION}
OPTIONS_SUB= yes
-OPTIONS_GROUP= APR APU
-OPTIONS_GROUP_APR= IPV6 DEVRANDOM
-OPTIONS_GROUP_APU= BDB GDBM LDAP MYSQL NDBM PGSQL SQLITE FREETDS
+OPTIONS_GROUP= APU
+OPTIONS_DEFINE= IPV6 DEVRANDOM
+OPTIONS_GROUP_APU= BDB GDBM LDAP MYSQL NDBM ODBC PGSQL SQLITE
OPTIONS_RADIO= CRYPTO
OPTIONS_RADIO_CRYPTO= SSL NSS
OPTIONS_DEFAULT= DEVRANDOM BDB GDBM SSL
+APU_DESC= Database support
+CRYPTO_DESC= Cryptography provider
DEVRANDOM_DESC= Use /dev/random or compatible
NDBM_DESC= NDBM support
NSS_DESC= NSS crypto driver
@@ -42,11 +43,11 @@
# APR-Util Options
BDB_USES= bdb:5+
-FREETDS_LIB_DEPENDS= libsybdb.so:databases/freetds
GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm
LDAP_USE= OPENLDAP=yes
MYSQL_USE= MYSQL=yes
NSS_LIB_DEPENDS= libnss3.so:security/nss
+ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC
PGSQL_USES= pgsql
SQLITE_USES= sqlite
SSL_USES= ssl
@@ -71,77 +72,51 @@
--with-expat=${LOCALBASE} \
--with-iconv=${ICONV_PREFIX}
-.include <bsd.port.options.mk>
-
########## APR Options
-.if ${PORT_OPTIONS:MIPV6}
-APR_CONF_ARGS+= --enable-ipv6
-.else
-APR_CONF_ARGS+= --disable-ipv6
-.endif
-
-.if ${PORT_OPTIONS:MDEVRANDOM}
-APR_CONF_ARGS+= --with-devrandom
-.else
-APR_CONF_ARGS+= --without-devrandom
-.endif
+IPV6_VARS= APR_CONF_ARGS+=--enable-ipv6
+IPV6_VARS_OFF= APR_CONF_ARGS+=--disable-ipv6
+DEVRANDOM_VARS= APR_CONF_ARGS+=--with-devrandom
+DEVRANDOM_VARS_OFF= APR_CONF_ARGS+=--without-devrandom
######### APR-Util Options
# make sure 1st include is "${APR_WRKDIR}/include"
# to avoid failures if previous apr_version.h is present
-APU_CPPFLAGS= -I${APR_WRKDIR}/include
-
-.if ${PORT_OPTIONS:MGDBM}
-APU_CONF_ARGS+= --with-gdbm=${LOCALBASE}
-.else
-APU_CONF_ARGS+= --without-gdbm
-.endif
+APU_CPPFLAGS= -I${APR_WRKDIR}/include
-.if ${PORT_OPTIONS:MBDB}
-APU_CONF_ARGS+= --with-berkeley-db=${BDB_INCLUDE_DIR}:${BDB_LIB_DIR}
-.else
-APU_CONF_ARGS+= --without-berkeley-db
-.endif
+BDB_VARS= APU_CONF_ARGS+=--with-berkeley-db=${BDB_INCLUDE_DIR}:${BDB_LIB_DIR}
+BDB_VARS_OFF= APU_CONF_ARGS+=--without-berkeley-db
+GDBM_VARS= APU_CONF_ARGS+=--with-gdbm=${LOCALBASE}
+LDAP_VARS= APU_CONF_ARGS+="--with-ldap-include=${LOCALBASE}/include \
+ --with-ldap-lib=${LOCALBASE}/lib --with-ldap=ldap"
+MYSQL_VARS= APU_CONF_ARGS+=--with-mysql=${LOCALBASE} \
+ APU_CPPFLAGS+="-I${LOCALBASE}/include -I${LOCALBASE}/include/mysql -DHAVE_MYSQL_H" \
+ LIBS+=-L${LOCALBASE}/lib/mysql
+
+NDBM_VARS= APU_CONF_ARGS+=--with-ndbm=/usr
+NSS_VARS= APU_CONF_ARGS+=--with-nss=${LOCALBASE} \
+ APU_CPPFLAGS+=-I${LOCALBASE}/include/nss \
+ LDFLAGS+=-L${LOCALBASE}/lib/nss
+ODBC_VARS= APU_CONF_ARGS+=--with-odbc=${LOCALBASE}
+SSL_VARS= APU_CONF_ARGS+=--with-openssl=${OPENSSLBASE} \
+ APU_CPPFLAGS+=-I${OPENSSLINC} \
+ LDFLAGS+=-L${OPENSSLLIB}
+SSL_VARS_OFF= APU_CONF_ARGS+=--without-openssl
+PGSQL_VARS= APU_CONF_ARGS+=--with-pgsql=${LOCALBASE} \
+ APU_CONF_ENV+=ac_cv_path_PGSQL_CONFIG=""
+SQLITE_VARS= APU_CONF_ENV+=--with-sqlite3=${LOCALBASE}
+SQLITE_VARS_OFF= APU_CONF_ARGS+=--without-sqlite3
-.if ${PORT_OPTIONS:MNDBM}
-APU_CONF_ARGS+= --with-ndbm=/usr
-.else
-APU_CONF_ARGS+= --without-ndbm
-.endif
-.if ${PORT_OPTIONS:MLDAP}
-APU_CONF_ARGS+= --with-ldap-include=${LOCALBASE}/include \
- --with-ldap-lib=${LOCALBASE}/lib --with-ldap=ldap
-.else
-APU_CONF_ARGS+= --without-ldap
-.endif
-.if ${PORT_OPTIONS:MFREETDS}
-APU_CONF_ARGS+= --with-freetds=${LOCALBASE}
-.else
-APU_CONF_ARGS+= --without-freetds
-.endif
+.for db in GDBM NDBM LDAP ODBC MYSQL NSS PGSQL
+${db}_VARS_OFF= APU_CONF_ARGS+=--without-${db:tl}
+.endfor
-.if ${PORT_OPTIONS:MMYSQL}
-APU_CONF_ARGS+= --with-mysql=${LOCALBASE}
-APU_CPPFLAGS+= -I${LOCALBASE}/include -I${LOCALBASE}/include/mysql -DHAVE_MYSQL_H
-LIBS+= -L${LOCALBASE}/lib/mysql
-.else
-APU_CONF_ARGS+= --without-mysql
-.endif
-
-.if ${PORT_OPTIONS:MPGSQL}
-APU_CONF_ARGS+= --with-pgsql=${LOCALBASE}
-APU_CONF_ENV+= ac_cv_path_PGSQL_CONFIG=""
-.else
-APU_CONF_ARGS+= --without-pgsql
-.endif
+APR_CONF_ENV+= ${CONFIGURE_ENV:O:u} CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}"
+# include apu specific CPPFLAGS 1st!
+APU_CONF_ENV+= ${CONFIGURE_ENV:O:u} CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${APU_CPPFLAGS} ${CPPFLAGS}"
-.if ${PORT_OPTIONS:MSQLITE}
-APU_CONF_ARGS+= --with-sqlite3=${LOCALBASE}
-.else
-APU_CONF_ARGS+= --without-sqlite3
-.endif
+.include <bsd.port.options.mk>
# crypto (apache24)
.if ${PORT_OPTIONS:MSSL} || ${PORT_OPTIONS:MNSS}
@@ -150,26 +125,6 @@
APU_CONF_ARGS+= --without-crypto
.endif
-.if ${PORT_OPTIONS:MSSL}
-APU_CPPFLAGS+= -I${OPENSSLINC}
-LDFLAGS+= -L${OPENSSLLIB}
-APU_CONF_ARGS+= --with-openssl=${OPENSSLBASE}
-.else
-APU_CONF_ARGS+= --without-openssl
-.endif
-
-.if ${PORT_OPTIONS:MNSS}
-APU_CPPFLAGS+= -I${LOCALBASE}/include/nss
-LDFLAGS+= -L${LOCALBASE}/lib/nss
-APU_CONF_ARGS+= --with-nss=${LOCALBASE}
-.else
-APU_CONF_ARGS+= --without-nss
-.endif
-
-APR_CONF_ENV+= ${CONFIGURE_ENV:O:u} CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}"
-# include apu specific CPPFLAGS 1st!
-APU_CONF_ENV+= ${CONFIGURE_ENV:O:u} CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${APU_CPPFLAGS} ${CPPFLAGS}"
-
post-extract:
# cleanup files not used on this platform
@${FIND} ${WRKSRC} -type f \( -name 'NWGNU*' -o -name '*.ds?' -o -name '*.dep' -o -name '*.mak' -o -name '*.win' \) -delete
@@ -216,7 +171,7 @@
#regression-test: test
rpfl: configure
-# maintainer only: strip PID from logs (better compair)
+# maintainer only: strip PID from logs (better compare)
${SED} -i '' -E 's|^configure:[0-9]+:|configure:_pid_:|g' ${APR_WRKDIR}/config.log
${SED} -i '' -E 's|^configure:[0-9]+:|configure:_pid_:|g' ${APU_WRKDIR}/config.log
Index: devel/apr1/distinfo
===================================================================
--- devel/apr1/distinfo
+++ devel/apr1/distinfo
@@ -1,4 +1,5 @@
-SHA256 (apr-1.5.2.tar.gz) = 1af06e1720a58851d90694a984af18355b65bb0d047be03ec7d659c746d6dbdb
-SIZE (apr-1.5.2.tar.gz) = 1031613
-SHA256 (apr-util-1.5.4.tar.gz) = 976a12a59bc286d634a21d7be0841cc74289ea9077aa1af46be19d1a6e844c19
-SIZE (apr-util-1.5.4.tar.gz) = 874044
+TIMESTAMP = 1499711633
+SHA256 (apr-1.6.2.tar.gz) = 4fc24506c968c5faf57614f5d0aebe0e9d0b90afa47a883e1a1ca94f15f4a42e
+SIZE (apr-1.6.2.tar.gz) = 1071074
+SHA256 (apr-util-1.6.0.tar.gz) = 483ef4d59e6ac9a36c7d3fd87ad7b9db7ad8ae29c06b9dd8ff22dda1cc416389
+SIZE (apr-util-1.6.0.tar.gz) = 565507
Index: devel/apr1/files/patch-apr-util__dbd__apr_dbd_freetds.c
===================================================================
--- devel/apr1/files/patch-apr-util__dbd__apr_dbd_freetds.c
+++ /dev/null
@@ -1,554 +0,0 @@
-# http://lists.freebsd.org/pipermail/freebsd-apache/2013-January/003020.html
-#
-# From: "Mikhail T." <mi+thun@aldan.algebra.com>
-# I've made the FreeTDS-driver work again -- and submitted the patch to Apache:
-# https://issues.apache.org/bugzilla/show_bug.cgi?id=53666
-===================================================================================
---- apr-util-1.5.4/dbd/apr_dbd_freetds.c.orig 2012-08-05 21:09:15 UTC
-+++ apr-util-1.5.4/dbd/apr_dbd_freetds.c
-@@ -40,12 +40,12 @@
- #include <freetds/sybdb.h>
- #endif
- #ifdef HAVE_SYBDB_H
-+#include <sybfront.h>
- #include <sybdb.h>
- #endif
-
- #include <stdio.h>
- #include <sys/types.h>
--#include <regex.h>
-
- /* This probably needs to change for different applications */
- #define MAX_COL_LEN 256
-@@ -67,6 +67,7 @@ struct apr_dbd_t {
- apr_dbd_transaction_t *trans;
- apr_pool_t *pool;
- const char *params;
-+ const char *lasterror;
- RETCODE err;
- };
-
-@@ -80,20 +81,20 @@ struct apr_dbd_results_t {
-
- struct apr_dbd_row_t {
- apr_dbd_results_t *res;
-- BYTE buf[MAX_COL_LEN];
-+ apr_pool_t *pool;
- };
-
- struct apr_dbd_prepared_t {
- int nargs;
-- regex_t **taint;
-- int *sz;
-- char *fmt;
-+ int fmtlen;
-+ const char *fmt, *label;
-+ apr_dbd_type_e *types;
-+ int offsets[];
- };
-
--#define dbd_freetds_is_success(x) (x == SUCCEED)
-+const apr_dbd_driver_t apr_dbd_freetds_driver; /* Forward declaration */
-
--static int labelnum = 0; /* FIXME */
--static regex_t dbd_freetds_find_arg;
-+#define dbd_freetds_is_success(x) (x == SUCCEED)
-
- /* execute a query that doesn't return a result set, mop up,
- * and return and APR-flavoured status
-@@ -102,7 +103,11 @@ static RETCODE freetds_exec(DBPROCESS *p
- int want_results, int *nrows)
- {
- /* TBD */
-- RETCODE rv = dbcmd(proc, query);
-+ RETCODE rv = dbcmd(proc,
-+#ifndef TDS_STATIC_CAST /* if not compiling against FreeTDS, drop const :-( */
-+ (char *)
-+#endif
-+ query);
- if (rv != SUCCEED) {
- return rv;
- }
-@@ -143,6 +148,7 @@ static int dbd_freetds_select(apr_pool_t
- * Ignore seek
- */
-
-+ sql->lasterror = NULL;
- sql->err = freetds_exec(sql->proc, query, 1, NULL);
- if (!dbd_freetds_is_success(sql->err)) {
- if (sql->trans) {
-@@ -190,51 +196,38 @@ static int dbd_freetds_select(apr_pool_t
- #endif
- return (sql->err == SUCCEED) ? 0 : 1;
- }
--static const char *dbd_untaint(apr_pool_t *pool, regex_t *rx, const char *val)
--{
-- regmatch_t match[1];
-- if (rx == NULL) {
-- /* no untaint expression */
-- return val;
-- }
-- if (regexec(rx, val, 1, match, 0) == 0) {
-- return apr_pstrndup(pool, val+match[0].rm_so,
-- match[0].rm_eo - match[0].rm_so);
-- }
-- return "";
--}
-+
- static const char *dbd_statement(apr_pool_t *pool,
-- apr_dbd_prepared_t *stmt,
-- int nargs, const char **args)
-+ const apr_dbd_prepared_t *stmt,
-+ const char **args)
- {
- int i;
- int len;
-- const char *var;
- char *ret;
-- const char *p_in;
-+ const char *p_in, *format;
- char *p_out;
-- char *q;
-
-- /* compute upper bound on length (since untaint shrinks) */
-- len = strlen(stmt->fmt) +1;
-- for (i=0; i<nargs; ++i) {
-- len += strlen(args[i]) - 2;
-+ len = stmt->fmtlen;
-+ for (i=0; i < stmt->nargs; ++i) {
-+ len += strlen(args[i]);
-+ switch (stmt->types[i]) {
-+ case APR_DBD_TYPE_STRING: len += 2; break; /* For the quotes */
-+ default: break;/* Other types are all taken verbatim at the moment */
-+ }
- }
-- i = 0;
- p_in = stmt->fmt;
- p_out = ret = apr_palloc(pool, len);
-- /* FIXME silly bug - this'll catch %%s */
-- while (q = strstr(p_in, "%s"), q != NULL) {
-- len = q-p_in;
-- strncpy(p_out, p_in, len);
-- p_in += len;
-- p_out += len;
-- var = dbd_untaint(pool, stmt->taint[i], args[i]);
-- len = strlen(var);
-- strncpy(p_out, var, len);
-- p_in += 2;
-- p_out += len;
-- ++i;
-+ for (i = 0; i < stmt->nargs; i++) {
-+ len = stmt->offsets[i];
-+ switch (stmt->types[i]) {
-+ case APR_DBD_TYPE_STRING:
-+ format = "%.*s'%s'";
-+ break;
-+ default:
-+ format = "%.*s%s";
-+ }
-+ p_out += sprintf(p_out, format, len, p_in, args[i]);
-+ p_in += (len + 1);
- }
- strcpy(p_out, p_in);
- return ret;
-@@ -244,8 +237,7 @@ static int dbd_freetds_pselect(apr_pool_
- apr_dbd_prepared_t *statement,
- int seek, const char **values)
- {
-- const char *query = dbd_statement(pool, statement,
-- statement->nargs, values);
-+ const char *query = dbd_statement(pool, statement, values);
- return dbd_freetds_select(pool, sql, results, query, seek);
- }
- static int dbd_freetds_pvselect(apr_pool_t *pool, apr_dbd_t *sql,
-@@ -273,8 +265,7 @@ static int dbd_freetds_pquery(apr_pool_t
- int *nrows, apr_dbd_prepared_t *statement,
- const char **values)
- {
-- const char *query = dbd_statement(pool, statement,
-- statement->nargs, values);
-+ const char *query = dbd_statement(pool, statement, values);
- return dbd_freetds_query(sql, nrows, query);
- }
- static int dbd_freetds_pvquery(apr_pool_t *pool, apr_dbd_t *sql, int *nrows,
-@@ -301,11 +292,13 @@ static int dbd_freetds_get_row(apr_pool_
- RETCODE rv = 0;
- apr_dbd_row_t *row = *rowp;
- int sequential = ((rownum >= 0) && res->random) ? 0 : 1;
-+ apr_dbd_t *sql = (void *)dbgetuserdata(res->proc);
-
- if (row == NULL) {
- row = apr_palloc(pool, sizeof(apr_dbd_row_t));
- *rowp = row;
- row->res = res;
-+ row->pool = pool; /* For subsequent calls to get_entry */
- }
- /*
- else {
-@@ -321,18 +314,37 @@ static int dbd_freetds_get_row(apr_pool_
- rv = dbnextrow(res->proc);
- }
- else {
-+ /* XXX dbgetrow() only works if DBBUFFER-option is set */
- rv = (rownum >= 0) ? dbgetrow(res->proc, rownum) : NO_MORE_ROWS;
- }
- switch (rv) {
- case SUCCEED: return 0;
- case REG_ROW: return 0;
- case NO_MORE_ROWS:
-+ if (dbisopt(res->proc, DBBUFFER, NULL) || sequential) {
-+ sql->lasterror = apr_pstrcat(sql->pool,
-+ "NO_MORE_ROWS (count: ", apr_itoa(sql->pool, DBCOUNT(res->proc)),
-+ ", first: ", apr_itoa(sql->pool, DBFIRSTROW(res->proc)),
-+ ", current: ", apr_itoa(sql->pool, DBCURROW(res->proc)),
-+ ", last: ", apr_itoa(sql->pool, DBLASTROW(res->proc)),
-+ ")", NULL);;
-+ } else {
-+ sql->lasterror = "NO_MORE_ROWS (DBBUFFER option must be on "
-+ "for dbgetrow() to work)";
-+ }
- apr_pool_cleanup_run(res->pool, res->proc, clear_result);
- *rowp = NULL;
- return -1;
-- case FAIL: return 1;
-- case BUF_FULL: return 2; /* FIXME */
-- default: return 3;
-+ case FAIL:
-+ sql->lasterror = "FAIL";
-+ return 1;
-+ case BUF_FULL:
-+ sql->lasterror = "BUF_FULL";
-+ return 2; /* FIXME */
-+ default:
-+ sql->lasterror = apr_pstrcat(res->pool,
-+ "Unexpected error number ", apr_itoa(res->pool, rv), NULL);
-+ return 3;
- }
-
- return 0;
-@@ -340,24 +352,27 @@ static int dbd_freetds_get_row(apr_pool_
-
- static const char *dbd_freetds_get_entry(const apr_dbd_row_t *row, int n)
- {
-- /* FIXME: support different data types */
-- /* this fails - bind gets some vars but not others
-- return (const char*)row->res->vars[n].data;
-- */
- DBPROCESS* proc = row->res->proc;
-- BYTE *ptr = dbdata(proc, n+1);
-+ BYTE *ptr = dbdata(proc, n+1); /* XXX No error checking! */
- int t = dbcoltype(proc, n+1);
-- int l = dbcollen(proc, n+1);
-+ int l = dbdatlen(proc, n+1);
-+ if (l == -1)
-+ return NULL;
- if (dbwillconvert(t, SYBCHAR)) {
-- dbconvert(proc, t, ptr, l, SYBCHAR, (BYTE *)row->buf, -1);
-- return (const char*)row->buf;
-+ char *buf = apr_palloc(row->pool, l + 1);
-+ dbconvert(proc, t, ptr, l, SYBCHAR, buf, -1);
-+ return buf;
- }
- return (char*)ptr;
- }
-
- static const char *dbd_freetds_error(apr_dbd_t *sql, int n)
- {
-- /* XXX this doesn't seem to exist in the API ??? */
-+ const char *err = sql->lasterror;
-+
-+ sql->lasterror = NULL; /* Reset, so we stop appending */
-+ if (err)
-+ return err;
- return apr_psprintf(sql->pool, "Error %d", sql->err);
- }
-
-@@ -367,6 +382,7 @@ static int dbd_freetds_query(apr_dbd_t *
- return sql->trans->errnum;
- }
- *nrows = 0;
-+ sql->lasterror = NULL;
- sql->err = freetds_exec(sql->proc, query, 0, nrows);
-
- if (sql->err != SUCCEED) {
-@@ -384,114 +400,39 @@ static const char *dbd_freetds_escape(ap
- return arg;
- }
-
--static apr_status_t freetds_regfree(void *rx)
--{
-- regfree((regex_t*)rx);
-- return APR_SUCCESS;
--}
--static int recurse_args(apr_pool_t *pool, int n, const char *query,
-- apr_dbd_prepared_t *stmt, int offs)
--{
--
-- /* we only support %s arguments for now */
-- int ret;
-- char arg[256];
-- regmatch_t matches[3];
-- if (regexec(&dbd_freetds_find_arg, query, 3, matches, 0) != 0) {
-- /* No more args */
-- stmt->nargs = n;
-- stmt->taint = apr_palloc(pool, n*sizeof(regex_t*));
-- stmt->sz = apr_palloc(pool, n*sizeof(int));
-- ret = 0;
-- }
-- else {
-- int i;
-- int sz = 0;
-- int len = matches[1].rm_eo - matches[1].rm_so - 2;
-- if (len > 255) {
-- return 9999;
-- }
--
-- ret = recurse_args(pool, n+1, query+matches[0].rm_eo,
-- stmt, offs+matches[0].rm_eo);
--
-- memmove(stmt->fmt + offs + matches[1].rm_so,
-- stmt->fmt + offs + matches[0].rm_eo-1,
-- strlen(stmt->fmt+offs+matches[0].rm_eo)+2);
--
-- /* compile untaint to a regex if found */
-- if (matches[1].rm_so == -1) {
-- stmt->taint[n] = NULL;
-- }
-- else {
-- strncpy(arg, query+matches[1].rm_so+1,
-- matches[1].rm_eo - matches[1].rm_so - 2);
-- arg[matches[1].rm_eo - matches[1].rm_so - 2] = '\0';
-- stmt->taint[n] = apr_palloc(pool, sizeof(regex_t));
-- if (regcomp(stmt->taint[n], arg, REG_ICASE|REG_EXTENDED) != 0) {
-- ++ret;
-- }
-- else {
-- apr_pool_cleanup_register(pool, stmt->taint[n], freetds_regfree,
-- apr_pool_cleanup_null);
-- }
-- }
--
-- /* record length if specified */
-- for (i=matches[2].rm_so; i<matches[2].rm_eo; ++i) {
-- sz = 10*sz + (query[i]-'\0');
-- }
-- }
-- return ret;
--}
--
- static int dbd_freetds_prepare(apr_pool_t *pool, apr_dbd_t *sql,
- const char *query, const char *label,
- int nargs, int nvals, apr_dbd_type_e *types,
- apr_dbd_prepared_t **statement)
- {
-+ int i;
-+ const char *p, *op;
- apr_dbd_prepared_t *stmt;
-
-- if (label == NULL) {
-- label = apr_psprintf(pool, "%d", labelnum++);
-+ if (!*statement &&
-+ (*statement = apr_palloc(pool,
-+ sizeof(apr_dbd_prepared_t) + nargs*sizeof(int))) == NULL) {
-+ return APR_EGENERAL;
- }
-
-- if (!*statement) {
-- *statement = apr_palloc(pool, sizeof(apr_dbd_prepared_t));
-- }
- stmt = *statement;
-+ stmt->nargs = nargs;
-+ stmt->fmt = query;
-+ stmt->fmtlen = strlen(query) - nargs + 1;
-+ stmt->types = types;
-+ stmt->label = label; /* XXX Not used anywhere at the moment */
-
--#if 0
-- /* count args */
-- stmt->fmt = apr_pstrdup(pool, query);
-- stmt->fmt = recurse_args(pool, 0, query, stmt, stmt->fmt);
--
-- /* overestimate by a byte or two to simplify */
-- len = strlen("CREATE PROC apr.")
-- + strlen(label)
-- + stmt->nargs * strlen(" @arg1 varchar(len1),")
-- + strlen(" AS begin ")
-- + strlen(stmt->fmt)
-- + strlen(" end "); /* extra byte for terminator */
--
-- pquery = apr_pcalloc(pool, len);
-- sprintf(pquery, "CREATE PROC apr.%s", label);
-- for (i=0; i<stmt->nargs; ++i) {
-- sprintf(pquery+strlen(pquery), " @arg%d varchar(%d)", i, stmt->sz[i]);
-- if (i < stmt->nargs-1) {
-- pquery[strlen(pquery)] = ',';
-- }
-+ /*
-+ * Run through the query-template looking for the special character,
-+ * which the dbd_prepare inserted into it on our behalf
-+ */
-+ for (i = 0, op = query; i < nargs; i++) {
-+ p = strchr(op, apr_dbd_freetds_driver.pformat[0]);
-+ stmt->offsets[i] = p - op;
-+ op = p + 1;
- }
-- strcat(pquery, " AS BEGIN ");
-- strcat(pquery, stmt->fmt);
-- strcat(pquery, " END");
--
-- return (freetds_exec(sql->proc, pquery, 0, &i) == SUCCEED) ? 0 : 1;
--#else
-- stmt->fmt = apr_pstrdup(pool, query);
-- return recurse_args(pool, 0, query, stmt, 0);
--#endif
-
-+ return APR_SUCCESS;
- }
-
- static int dbd_freetds_start_transaction(apr_pool_t *pool, apr_dbd_t *handle,
-@@ -541,9 +482,9 @@ static DBPROCESS *freetds_open(apr_pool_
- DBPROCESS *process;
- LOGINREC *login;
- static const char *delims = " \r\n\t;|,";
-- char *ptr;
-- char *key;
-- char *value;
-+ const char *ptr;
-+ const char *key;
-+ const char *value;
- int vlen;
- int klen;
- char *buf;
-@@ -564,7 +505,7 @@ static DBPROCESS *freetds_open(apr_pool_
- }
- for (key = ptr-1; apr_isspace(*key); --key);
- klen = 0;
-- while (apr_isalpha(*key)) {
-+ while (key >= params && apr_isalpha(*key)) {
- --key;
- ++klen;
- }
-@@ -631,6 +572,7 @@ static apr_dbd_t *dbd_freetds_open(apr_p
- sql->pool = pool;
- sql->proc = process;
- sql->params = params;
-+ dbsetuserdata(process, (BYTE *)sql);
- return sql;
- }
-
-@@ -686,24 +628,73 @@ static int dbd_freetds_num_tuples(apr_db
- static apr_status_t freetds_term(void *dummy)
- {
- dbexit();
-- regfree(&dbd_freetds_find_arg);
- return APR_SUCCESS;
- }
-+
-+static int freetds_msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
-+ int severity, char *msgtext, char *srvname,
-+ char *procname, int line)
-+{
-+ char *value;
-+ apr_dbd_t *sql;
-+
-+ if (dbproc == NULL || (sql = (void *)dbgetuserdata(dbproc)) == NULL) {
-+ /* Initial messages are not interesting */
-+ return 0;
-+ }
-+
-+ value = apr_psprintf(sql->pool, "%s: %s", srvname, msgtext);
-+ if (procname && procname[0])
-+ value = apr_pstrcat(sql->pool, value, " In procedure ",
-+ procname, NULL);
-+ if (line)
-+ value = apr_pstrcat(sql->pool, value,
-+ procname && procname[0] ? ", line " : " Line ",
-+ apr_itoa(sql->pool, line), NULL);
-+
-+ if (sql->lasterror)
-+ sql->lasterror = apr_pstrcat(sql->pool, sql->lasterror, "\n", value, NULL);
-+ else
-+ sql->lasterror = value;
-+
-+ return 0;
-+}
-+
- static int freetds_err_handler(DBPROCESS *dbproc, int severity, int dberr,
- int oserr, char *dberrstr, char *oserrstr)
- {
-+ char *value;
-+ apr_dbd_t *sql;
-+
-+ if (dbproc == NULL || (sql = (void *)dbgetuserdata(dbproc)) == NULL) {
-+ fprintf(stderr, "%s\n", dberrstr);
-+ return INT_CANCEL;
-+ }
-+ /*
-+ * Do not append the useless "general error", if details
-+ * are already recorded (by the msg_handler). Just return.
-+ * XXX: this skipping currently only works with Sybase's OpenClient
-+ * XXX: because FreeTDS implementation uses bogus dberr values:
-+ * XXX: https://sourceforge.net/tracker/?func=detail&aid=3555777&group_id=33106&atid=407806
-+ */
-+ if (dberr == SYBESMSG && sql->lasterror)
-+ return INT_CANCEL;
-+
-+ value = apr_psprintf(sql->pool, "%d: %s", dberr, dberrstr);
-+ if (oserrstr) {
-+ value = apr_pstrcat(sql->pool, ". (", oserrstr, ")", NULL);
-+ }
-+ if (sql->lasterror)
-+ sql->lasterror = apr_pstrcat(sql->pool, sql->lasterror, "\n", value, NULL);
-+ else
-+ sql->lasterror = value;
- return INT_CANCEL; /* never exit */
- }
- static void dbd_freetds_init(apr_pool_t *pool)
- {
-- int rv = regcomp(&dbd_freetds_find_arg,
-- "%(\\{[^}]*\\})?([0-9]*)[A-Za-z]", REG_EXTENDED);
-- if (rv != 0) {
-- char errmsg[256];
-- regerror(rv, &dbd_freetds_find_arg, errmsg, 256);
-- fprintf(stderr, "regcomp failed: %s\n", errmsg);
-- }
-- dbinit();
-+ if (dbinit() == FAIL)
-+ fprintf(stderr, "dbinit() failed\n");
-+ dbmsghandle(freetds_msg_handler);
- dberrhandle(freetds_err_handler);
- apr_pool_cleanup_register(pool, NULL, freetds_term, apr_pool_cleanup_null);
- }
-@@ -765,7 +756,11 @@ static apr_status_t dbd_freetds_datum_ge
- #endif
-
- APU_MODULE_DECLARE_DATA const apr_dbd_driver_t apr_dbd_freetds_driver = {
-+#ifndef TI_MODULE_NAME
- "freetds",
-+#else
-+ TI_MODULE_NAME,
-+#endif
- dbd_freetds_init,
- dbd_freetds_native,
- dbd_freetds_open,
-@@ -787,19 +782,14 @@ APU_MODULE_DECLARE_DATA const apr_dbd_dr
- dbd_freetds_pvselect,
- dbd_freetds_pquery,
- dbd_freetds_pselect,
-- /* this is only implemented to support httpd/2.2 standard usage,
-- * as in the original DBD implementation. Everything else is NOTIMPL.
-- */
--#ifdef COMPILE_STUBS
- dbd_freetds_get_name,
- dbd_freetds_transaction_mode_get,
- dbd_freetds_transaction_mode_set,
-- "",
-+ "\1", /* Would not occur in a real query... */
- dbd_freetds_pvbquery,
- dbd_freetds_pvbselect,
- dbd_freetds_pbquery,
- dbd_freetds_pbselect,
- dbd_freetds_datum_get
--#endif
- };
- #endif
Index: devel/apr1/files/patch-apr__configure
===================================================================
--- devel/apr1/files/patch-apr__configure
+++ devel/apr1/files/patch-apr__configure
@@ -1,5 +1,5 @@
---- apr-1.5.2/configure.orig 2015-04-25 12:04:18 UTC
-+++ apr-1.5.2/configure
+--- apr-1.6.2/configure.orig 2015-04-25 12:04:18 UTC
++++ apr-1.6.2/configure
@@ -6624,11 +6624,7 @@ if test "x$apr_preload_done" != "xyes" ;
apr_lock_method="USE_FLOCK_SERIALIZE"
fi
Index: devel/apr1/files/patch-apr_poll_unix_kqueue.c
===================================================================
--- devel/apr1/files/patch-apr_poll_unix_kqueue.c
+++ devel/apr1/files/patch-apr_poll_unix_kqueue.c
@@ -1,8 +1,8 @@
# upstram PR: https://bz.apache.org/bugzilla/show_bug.cgi?id=59914
# FreeBSD PR: 211430
========================================================================
---- apr-1.5.2/poll/unix/kqueue.c.orig 2015-03-20 01:34:07 UTC
-+++ apr-1.5.2/poll/unix/kqueue.c
+--- apr-1.6.2/poll/unix/kqueue.c.orig 2015-03-20 01:34:07 UTC
++++ apr-1.6.2/poll/unix/kqueue.c
@@ -25,21 +25,40 @@
#ifdef HAVE_KQUEUE
Index: devel/apr1/pkg-plist
===================================================================
--- devel/apr1/pkg-plist
+++ devel/apr1/pkg-plist
@@ -7,6 +7,7 @@
include/apr-1/apr_base64.h
include/apr-1/apr_buckets.h
include/apr-1/apr_crypto.h
+include/apr-1/apr_cstr.h
include/apr-1/apr_date.h
include/apr-1/apr_dbd.h
include/apr-1/apr_dbm.h
@@ -36,12 +37,14 @@
include/apr-1/apr_network_io.h
include/apr-1/apr_optional.h
include/apr-1/apr_optional_hooks.h
+include/apr-1/apr_perms_set.h
include/apr-1/apr_poll.h
include/apr-1/apr_pools.h
include/apr-1/apr_portable.h
include/apr-1/apr_proc_mutex.h
include/apr-1/apr_queue.h
include/apr-1/apr_random.h
+include/apr-1/apr_redis.h
include/apr-1/apr_reslist.h
include/apr-1/apr_ring.h
include/apr-1/apr_rmm.h
@@ -49,6 +52,7 @@
include/apr-1/apr_sha1.h
include/apr-1/apr_shm.h
include/apr-1/apr_signal.h
+include/apr-1/apr_siphash.h
include/apr-1/apr_skiplist.h
include/apr-1/apr_strings.h
include/apr-1/apr_strmatch.h
@@ -78,12 +82,12 @@
%%SSL%%lib/apr-util-1/apr_crypto_openssl-1.so
%%SSL%%lib/apr-util-1/apr_crypto_openssl.a
%%SSL%%lib/apr-util-1/apr_crypto_openssl.so
-%%FREETDS%%lib/apr-util-1/apr_dbd_freetds-1.so
-%%FREETDS%%lib/apr-util-1/apr_dbd_freetds.a
-%%FREETDS%%lib/apr-util-1/apr_dbd_freetds.so
%%MYSQL%%lib/apr-util-1/apr_dbd_mysql-1.so
%%MYSQL%%lib/apr-util-1/apr_dbd_mysql.a
%%MYSQL%%lib/apr-util-1/apr_dbd_mysql.so
+%%ODBC%%lib/apr-util-1/apr_dbd_odbc-1.so
+%%ODBC%%lib/apr-util-1/apr_dbd_odbc.a
+%%ODBC%%lib/apr-util-1/apr_dbd_odbc.so
%%PGSQL%%lib/apr-util-1/apr_dbd_pgsql-1.so
%%PGSQL%%lib/apr-util-1/apr_dbd_pgsql.a
%%PGSQL%%lib/apr-util-1/apr_dbd_pgsql.so
@@ -114,7 +118,9 @@
lib/libaprutil-1.so.%%SHLIB_APU_MAJOR%%
libdata/pkgconfig/apr-1.pc
libdata/pkgconfig/apr-util-1.pc
+%%DATADIR%%/build-1/apr_common.m4
%%DATADIR%%/build-1/apr_rules.mk
+%%DATADIR%%/build-1/find_apr.m4
%%DATADIR%%/build-1/libtool
%%DATADIR%%/build-1/make_exports.awk
%%DATADIR%%/build-1/make_var_export.awk
Index: www/apache22/Makefile
===================================================================
--- www/apache22/Makefile
+++ www/apache22/Makefile
@@ -1,7 +1,7 @@
# $FreeBSD$
PORTNAME= apache22
-PORTVERSION= 2.2.32
+PORTVERSION= 2.2.34
PORTREVISION?= 0
CATEGORIES= www ipv6
MASTER_SITES= APACHE_HTTPD
@@ -72,6 +72,7 @@
SSL_CONFIGURE_ON= --with-ssl=${OPENSSLBASE}
SSL_LDFLAGS= -L${OPENSSLLIB}
SSL_USES= ssl
+SSL_CONFIGURE_ENV= HAVE_SSL_SET_STATE=0
SUEXEC_RSRCLIMIT_EXTRA_PATCHES= ${FILESDIR}/extra-patch-suexec_rsrclimit
SUEXEC_USERDIR_EXTRA_PATCHES= ${FILESDIR}/extra-patch-suexec_userdir
Index: www/apache22/distinfo
===================================================================
--- www/apache22/distinfo
+++ www/apache22/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1497032932
-SHA256 (apache22/httpd-2.2.32.tar.bz2) = 527bc9d8092d784daf08910dd6c9d2681d6a2325055b2cc69806a0a7df7ed650
-SIZE (apache22/httpd-2.2.32.tar.bz2) = 5777509
+TIMESTAMP = 1499801614
+SHA256 (apache22/httpd-2.2.34.tar.bz2) = e53183d5dfac5740d768b4c9bea193b1099f4b06b57e5f28d7caaf9ea7498160
+SIZE (apache22/httpd-2.2.34.tar.bz2) = 5779739
Index: www/apache24/Makefile
===================================================================
--- www/apache24/Makefile
+++ www/apache24/Makefile
@@ -1,7 +1,7 @@
# $FreeBSD$
PORTNAME= apache24
-PORTVERSION= 2.4.26
+PORTVERSION= 2.4.27
CATEGORIES= www ipv6
MASTER_SITES= APACHE_HTTPD
DISTNAME= httpd-${PORTVERSION}
@@ -78,6 +78,8 @@
LDAP_CONFIGURE_ON= --enable-ldap=shared
+BROTLI_CONFIGURE_ON= --with-brotli=${LOCALBASE}
+BROTLI_LIB_DEPENDS= libbrotlicommon.so:archivers/brotli
HTTP2_CONFIGURE_ON= --with-nghttp2=${LOCALBASE}
HTTP2_LIB_DEPENDS= libnghttp2.so:www/libnghttp2
LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit
@@ -85,7 +87,6 @@
LUA_USES= lua
PROXY_HTTP2_CONFIGURE_ON= --with-nghttp2=${LOCALBASE}
PROXY_HTTP2_LIB_DEPENDS= libnghttp2.so:www/libnghttp2
-
SOCACHE_DC_CONFIGURE_ON= --with-distcache=${LOCALBASE}
SOCACHE_DC_LIB_DEPENDS= libdistcache.so:security/distcache
@@ -98,7 +99,6 @@
SSL_USES= ssl
.include <bsd.port.options.mk>
-
ETC_SUBDIRS= Includes envvars.d extra modules.d
APR_CONFIG?= ${LOCALBASE}/bin/apr-1-config
@@ -150,6 +150,11 @@
.include <bsd.port.pre.mk>
.include "${APACHEDIR}/Makefile.modules"
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1100085 &&\
+ ${PORT_OPTIONS:MHTTP2} && ${OPENSSLBASE} == /usr
+SUB_FILES+= pkg-message
+.endif
+
post-extract:
# remove possible leftover .svn directories in the sources
@${FIND} ${WRKSRC} -type d -name .svn -print | ${XARGS} ${RM} -r
Index: www/apache24/Makefile.options
===================================================================
--- www/apache24/Makefile.options
+++ www/apache24/Makefile.options
@@ -11,11 +11,10 @@
# mod_proxy_html and xml2enc depending on libxml2
PROXY_ENABLED_MODULES= \
- PROXY_AJP PROXY_BALANCER PROXY_CONNECT PROXY_EXPRESS PROXY_FCGI \
+ PROXY_AJP PROXY_BALANCER PROXY_CONNECT PROXY_EXPRESS PROXY_FCGI PROXY_HTTP2 \
PROXY_FDPASS PROXY_FTP PROXY_HCHECK PROXY_HTML PROXY_HTTP PROXY_SCGI PROXY_WSTUNNEL
-PROXY_DISABLED_MODULES= \
- PROXY_HTTP2
+PROXY_DISABLED_MODULES=
# SESSION_CRYPTO need APR build with crypto (EVP support in APR)
SESSION_ENABLED_MODULES= \
@@ -40,7 +39,7 @@
DATA DAV DAV_FS DAV_LOCK DBD DEFLATE DIALUP DIR DUMPIO \
ENV EXPIRES EXT_FILTER \
FILE_CACHE FILTER \
- HEADERS HEARTBEAT HEARTMONITOR \
+ HEADERS HEARTBEAT HEARTMONITOR HTTP2 \
IMAGEMAP INCLUDE INFO \
LBMETHOD_BYBUSYNESS LBMETHOD_BYREQUESTS LBMETHOD_BYTRAFFIC \
LBMETHOD_HEARTBEAT LOGIO LOG_DEBUG LOG_FORENSIC \
@@ -55,9 +54,8 @@
WATCHDOG XML2ENC
MOST_DISABLED_MODULES:= \
- AUTHNZ_LDAP IDENT LDAP LUA SOCACHE_DC SUEXEC HTTP2
+ AUTHNZ_LDAP BROTLI IDENT LDAP LUA SOCACHE_DC SUEXEC
-# XXX PROXY and SESSION are modules but also used to
# enable/disable additional PROXY/SESSION modules
META_MODULES= PROXY SESSION
@@ -100,4 +98,3 @@
${PROXY_ENABLED_MODULES} \
MPM_SHARED \
MPM_PREFORK
-
Index: www/apache24/Makefile.options.desc
===================================================================
--- www/apache24/Makefile.options.desc
+++ www/apache24/Makefile.options.desc
@@ -63,6 +63,7 @@
AUTH_FORM_DESC= Form authentication
AUTOINDEX_DESC= Directory listing
+BROTLI_DESC= Brotli compression support
BUCKETEER_DESC= (dev) buckets manipulation filter
BUFFER_DESC= Filter Buffering
@@ -99,7 +100,7 @@
HEADERS_DESC= HTTP header control
HEARTBEAT_DESC= Generates Heartbeats
HEARTMONITOR_DESC= Collects Heartbeats
-HTTP2_DESC= HTTP/2 (RFC 7540) support (experimental)
+HTTP2_DESC= HTTP/2 (RFC 7540) support
IDENT_DESC= RFC 1413 ident lookups
IMAGEMAP_DESC= Server-side imagemaps
Index: www/apache24/distinfo
===================================================================
--- www/apache24/distinfo
+++ www/apache24/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1498129310
-SHA256 (apache24/httpd-2.4.26.tar.bz2) = a07eb52fafc879e0149d31882f7da63173e72df4478db4dc69f7a775b663d387
-SIZE (apache24/httpd-2.4.26.tar.bz2) = 6524642
+TIMESTAMP = 1499686775
+SHA256 (apache24/httpd-2.4.27.tar.bz2) = 71fcc128238a690515bd8174d5330a5309161ef314a326ae45c7c15ed139c13a
+SIZE (apache24/httpd-2.4.27.tar.bz2) = 6527394
Index: www/apache24/files/patch-modules_ssl_mod__ssl.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_mod__ssl.c
@@ -0,0 +1,34 @@
+--- modules/ssl/mod_ssl.c.orig 2017-04-03 11:39:20 UTC
++++ modules/ssl/mod_ssl.c
+@@ -337,12 +337,12 @@ static apr_status_t ssl_cleanup_pre_conf
+ #if HAVE_ENGINE_LOAD_BUILTIN_ENGINES
+ ENGINE_cleanup();
+ #endif
+-#if OPENSSL_VERSION_NUMBER >= 0x1000200fL
++#if OPENSSL_VERSION_NUMBER >= 0x1000200fL && !defined(OPENSSL_NO_COMP)
+ SSL_COMP_free_compression_methods();
+ #endif
+
+ /* Usually needed per thread, but this parent process is single-threaded */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #if OPENSSL_VERSION_NUMBER >= 0x1000000fL
+ ERR_remove_thread_state(NULL);
+ #else
+@@ -383,14 +383,14 @@ static int ssl_hook_pre_config(apr_pool_
+ /* Some OpenSSL internals are allocated per-thread, make sure they
+ * are associated to the/our same thread-id until cleaned up.
+ */
+-#if APR_HAS_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L
++#if APR_HAS_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ ssl_util_thread_id_setup(pconf);
+ #endif
+
+ /* We must register the library in full, to ensure our configuration
+ * code can successfully test the SSL environment.
+ */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ CRYPTO_malloc_init();
+ #else
+ OPENSSL_malloc_init();
Index: www/apache24/files/patch-modules_ssl_ssl__engine__init.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__engine__init.c
@@ -0,0 +1,47 @@
+--- modules/ssl/ssl_engine_init.c.orig 2017-04-03 11:39:20 UTC
++++ modules/ssl/ssl_engine_init.c
+@@ -47,7 +47,7 @@ APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ssl,
+ #define KEYTYPES "RSA or DSA"
+ #endif
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ /* OpenSSL Pre-1.1.0 compatibility */
+ /* Taken from OpenSSL 1.1.0 snapshot 20160410 */
+ static int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
+@@ -257,7 +257,7 @@ apr_status_t ssl_init_Module(apr_pool_t
+ #endif
+ }
+
+-#if APR_HAS_THREADS && OPENSSL_VERSION_NUMBER < 0x10100000L
++#if APR_HAS_THREADS && ( OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) )
+ ssl_util_thread_setup(p);
+ #endif
+
+@@ -380,7 +380,7 @@ apr_status_t ssl_init_Module(apr_pool_t
+ modssl_init_app_data2_idx(); /* for modssl_get_app_data2() at request time */
+
+ init_dh_params();
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
+ init_bio_methods();
+ #endif
+
+@@ -1301,7 +1301,7 @@ static apr_status_t ssl_init_server_cert
+ * or configure NIST P-256 (required to enable ECDHE for earlier versions)
+ * ECDH is always enabled in 1.1.0 unless excluded from SSLCipherList
+ */
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
+ else {
+ #if defined(SSL_CTX_set_ecdh_auto)
+ SSL_CTX_set_ecdh_auto(mctx->ssl_ctx, 1);
+@@ -2011,7 +2011,7 @@ apr_status_t ssl_init_ModuleKill(void *d
+
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
+ free_bio_methods();
+ #endif
+ free_dh_params();
Index: www/apache24/files/patch-modules_ssl_ssl__engine__io.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__engine__io.c
@@ -0,0 +1,38 @@
+--- modules/ssl/ssl_engine_io.c.orig 2017-05-30 12:26:05 UTC
++++ modules/ssl/ssl_engine_io.c
+@@ -164,7 +164,7 @@ static int bio_filter_create(BIO *bio)
+ {
+ BIO_set_shutdown(bio, 1);
+ BIO_set_init(bio, 1);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ /* No setter method for OpenSSL 1.1.0 available,
+ * but I can't find any functional use of the
+ * "num" field there either.
+@@ -549,7 +549,7 @@ static long bio_filter_in_ctrl(BIO *bio,
+ return -1;
+ }
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+
+ static BIO_METHOD bio_filter_out_method = {
+ BIO_TYPE_MEM,
+@@ -2024,7 +2024,7 @@ static void ssl_io_input_add_filter(ssl_
+
+ filter_ctx->pInputFilter = ap_add_input_filter(ssl_io_filter, inctx, r, c);
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ filter_ctx->pbioRead = BIO_new(&bio_filter_in_method);
+ #else
+ filter_ctx->pbioRead = BIO_new(bio_filter_in_method);
+@@ -2059,7 +2059,7 @@ void ssl_io_filter_init(conn_rec *c, req
+ filter_ctx->pOutputFilter = ap_add_output_filter(ssl_io_filter,
+ filter_ctx, r, c);
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ filter_ctx->pbioWrite = BIO_new(&bio_filter_out_method);
+ #else
+ filter_ctx->pbioWrite = BIO_new(bio_filter_out_method);
Index: www/apache24/files/patch-modules_ssl_ssl__engine__kernel.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__engine__kernel.c
@@ -0,0 +1,11 @@
+--- modules/ssl/ssl_engine_kernel.c.orig 2017-05-02 11:01:17 UTC
++++ modules/ssl/ssl_engine_kernel.c
+@@ -1733,7 +1733,7 @@ static void modssl_proxy_info_log(conn_r
+ * so we need to increment here to prevent them from
+ * being freed.
+ */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define modssl_set_cert_info(info, cert, pkey) \
+ *cert = info->x509; \
+ CRYPTO_add(&(*cert)->references, +1, CRYPTO_LOCK_X509); \
Index: www/apache24/files/patch-modules_ssl_ssl__engine__vars.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__engine__vars.c
@@ -0,0 +1,11 @@
+--- modules/ssl/ssl_engine_vars.c.orig 2017-03-20 12:01:16 UTC
++++ modules/ssl/ssl_engine_vars.c
+@@ -529,7 +529,7 @@ static char *ssl_var_lookup_ssl_cert(apr
+ resdup = FALSE;
+ }
+ else if (strcEQ(var, "A_SIG")) {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ nid = OBJ_obj2nid((ASN1_OBJECT *)(xs->cert_info->signature->algorithm));
+ #else
+ const ASN1_OBJECT *paobj;
Index: www/apache24/files/patch-modules_ssl_ssl__private.h
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__private.h
@@ -0,0 +1,55 @@
+--- modules/ssl/ssl_private.h.orig 2017-04-03 11:39:20 UTC
++++ modules/ssl/ssl_private.h
+@@ -123,6 +123,16 @@
+ #define MODSSL_SSL_METHOD_CONST
+ #endif
+
++#if defined(LIBRESSL_VERSION_NUMBER)
++/* Missing from LibreSSL */
++#define SSL_CTRL_SET_MIN_PROTO_VERSION 123
++#define SSL_CTRL_SET_MAX_PROTO_VERSION 124
++#define SSL_CTX_set_min_proto_version(ctx, version) \
++ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
++#define SSL_CTX_set_max_proto_version(ctx, version) \
++ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
++#endif
++
+ #if defined(OPENSSL_FIPS)
+ #define HAVE_FIPS
+ #endif
+@@ -136,7 +146,7 @@
+ #endif
+
+ /* session id constness */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define IDCONST
+ #else
+ #define IDCONST const
+@@ -199,7 +209,7 @@
+
+ #endif /* !defined(OPENSSL_NO_TLSEXT) && defined(SSL_set_tlsext_host_name) */
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define BN_get_rfc2409_prime_768 get_rfc2409_prime_768
+ #define BN_get_rfc2409_prime_1024 get_rfc2409_prime_1024
+ #define BN_get_rfc3526_prime_1536 get_rfc3526_prime_1536
+@@ -219,7 +229,7 @@ void init_bio_methods(void);
+ void free_bio_methods(void);
+ #endif
+
+-#if OPENSSL_VERSION_NUMBER < 0x10002000L
++#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define X509_STORE_CTX_get0_store(x) (x->ctx)
+ #endif
+
+@@ -934,7 +944,7 @@ char *ssl_util_readfilter(server_
+ const char * const *);
+ BOOL ssl_util_path_check(ssl_pathcheck_t, const char *, apr_pool_t *);
+ #if APR_HAS_THREADS
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ void ssl_util_thread_setup(apr_pool_t *);
+ #endif
+ void ssl_util_thread_id_setup(apr_pool_t *);
Index: www/apache24/files/patch-modules_ssl_ssl__util.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__util.c
@@ -0,0 +1,11 @@
+--- modules/ssl/ssl_util.c.orig 2017-03-24 13:31:03 UTC
++++ modules/ssl/ssl_util.c
+@@ -247,7 +247,7 @@ void ssl_asn1_table_unset(apr_hash_t *ta
+ }
+
+ #if APR_HAS_THREADS
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ /*
+ * To ensure thread-safetyness in OpenSSL - work in progress
+ */
Index: www/apache24/files/patch-modules_ssl_ssl__util__ssl.h
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__util__ssl.h
@@ -0,0 +1,11 @@
+--- modules/ssl/ssl_util_ssl.h.orig 2017-03-20 12:01:16 UTC
++++ modules/ssl/ssl_util_ssl.h
+@@ -41,7 +41,7 @@
+ #define MODSSL_LIBRARY_VERSION OPENSSL_VERSION_NUMBER
+ #define MODSSL_LIBRARY_NAME "OpenSSL"
+ #define MODSSL_LIBRARY_TEXT OPENSSL_VERSION_TEXT
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define MODSSL_LIBRARY_DYNTEXT SSLeay_version(SSLEAY_VERSION)
+ #else
+ #define MODSSL_LIBRARY_DYNTEXT OpenSSL_version(OPENSSL_VERSION)
Index: www/apache24/files/patch-modules_ssl_ssl__util__stapling.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-modules_ssl_ssl__util__stapling.c
@@ -0,0 +1,11 @@
+--- modules/ssl/ssl_util_stapling.c.orig 2017-07-06 21:11:28 UTC
++++ modules/ssl/ssl_util_stapling.c
+@@ -91,7 +91,7 @@ static X509 *stapling_get_issuer(modssl_
+ for (i = 0; i < sk_X509_num(extra_certs); i++) {
+ issuer = sk_X509_value(extra_certs, i);
+ if (X509_check_issued(issuer, x) == X509_V_OK) {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER < 0x2050000fL
+ CRYPTO_add(&issuer->references, 1, CRYPTO_LOCK_X509);
+ #else
+ X509_up_ref(issuer);
Index: www/apache24/files/patch-support_ab.c
===================================================================
--- /dev/null
+++ www/apache24/files/patch-support_ab.c
@@ -0,0 +1,17 @@
+--- support/ab.c.orig 2017-05-28 21:15:41 UTC
++++ support/ab.c
+@@ -197,6 +197,14 @@ typedef STACK_OF(X509) X509_STACK_TYPE;
+ #if !defined(OPENSSL_NO_TLSEXT) && defined(SSL_set_tlsext_host_name)
+ #define HAVE_TLSEXT
+ #endif
++#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2060000f
++# define SSL_CTRL_SET_MIN_PROTO_VERSION 123
++# define SSL_CTRL_SET_MAX_PROTO_VERSION 124
++#define SSL_CTX_set_min_proto_version(ctx, version) \
++ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)
++#define SSL_CTX_set_max_proto_version(ctx, version) \
++ SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)
++#endif
+ #endif
+
+ #include <math.h>
Index: www/apache24/files/pkg-message.in
===================================================================
--- /dev/null
+++ www/apache24/files/pkg-message.in
@@ -0,0 +1,5 @@
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! mod_http2 on FreeBSD with OpenSSL from base results in a mostly !!
+!! functionally unusable module due to lack of "Upgrade" !!
+!! capability in OpenSSL 1.0.1. !!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Index: www/apache24/pkg-plist
===================================================================
--- www/apache24/pkg-plist
+++ www/apache24/pkg-plist
@@ -109,6 +109,7 @@
%%MOD_AUTHZ_OWNER%%libexec/apache24/mod_authz_owner.so
%%MOD_AUTHZ_USER%%libexec/apache24/mod_authz_user.so
%%MOD_AUTOINDEX%%libexec/apache24/mod_autoindex.so
+%%MOD_BROTLI%%libexec/apache24/mod_brotli.so
%%MOD_BUCKETEER%%libexec/apache24/mod_bucketeer.so
%%MOD_BUFFER%%libexec/apache24/mod_buffer.so
%%MOD_CACHE%%libexec/apache24/mod_cache.so

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 12, 5:09 AM (18 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29566196
Default Alt Text
D11285.id30684.diff (45 KB)

Event Timeline