aboutsummaryrefslogtreecommitdiff
path: root/net/gsk
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2021-03-15 07:20:56 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2021-03-15 07:20:56 +0000
commit84e4216099644be3560771a5082f6fb7325c3262 (patch)
treee63990b29ab49c6e6b59163b132b02c5815e70f8 /net/gsk
parent80f8bd17128e1f1021dfb5d8ef644f524ba8f2ed (diff)
downloadports-84e4216099644be3560771a5082f6fb7325c3262.tar.gz
ports-84e4216099644be3560771a5082f6fb7325c3262.zip
Unbreak the build against contemporary OpenSSL versions by converting
to the new BIO_*() API.
Notes
Notes: svn path=/head/; revision=568438
Diffstat (limited to 'net/gsk')
-rw-r--r--net/gsk/Makefile9
-rw-r--r--net/gsk/files/patch-src_ssl_gskopensslbiostream.c84
2 files changed, 85 insertions, 8 deletions
diff --git a/net/gsk/Makefile b/net/gsk/Makefile
index 5521c374f500..d8adf3f10de2 100644
--- a/net/gsk/Makefile
+++ b/net/gsk/Makefile
@@ -26,13 +26,6 @@ LDFLAGS+= -L${OPENSSLLIB}
OPTIONS_DEFINE= DOCS
-.include <bsd.port.pre.mk>
-
-.if ${SSL_DEFAULT} == base
-BROKEN_FreeBSD_12= incomplete definition of type 'struct bio_st'
-BROKEN_FreeBSD_13= incomplete definition of type 'struct bio_st'
-.endif
-
post-patch:
@${REINPLACE_CMD} -e \
'/^SUBDIRS/s|doc||' ${WRKSRC}/Makefile.in
@@ -47,4 +40,4 @@ post-install-DOCS-on:
${INSTALL_DATA} ${WRKSRC}/doc/html/*.html ${STAGEDIR}${DOCSDIR}/html
${INSTALL_DATA} ${WRKSRC}/doc/html/*.png ${STAGEDIR}${DOCSDIR}/html
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/net/gsk/files/patch-src_ssl_gskopensslbiostream.c b/net/gsk/files/patch-src_ssl_gskopensslbiostream.c
new file mode 100644
index 000000000000..bb40af62d49e
--- /dev/null
+++ b/net/gsk/files/patch-src_ssl_gskopensslbiostream.c
@@ -0,0 +1,84 @@
+--- src/ssl/gskopensslbiostream.c.orig 2006-05-17 18:39:31 UTC
++++ src/ssl/gskopensslbiostream.c
+@@ -106,7 +106,7 @@ bio_gsk_stream_pair_bwrite (BIO *bio,
+ const char *out,
+ int length)
+ {
+- GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (bio->ptr);
++ GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (BIO_get_data(bio));
+ DEBUG_BIO("bio_gsk_stream_pair_bwrite: writing %d bytes to read-buffer of backend", length);
+ gsk_buffer_append (gsk_buffer_stream_peek_read_buffer (buffer_stream), out, length);
+ gsk_buffer_stream_read_buffer_changed (buffer_stream);
+@@ -118,7 +118,7 @@ bio_gsk_stream_pair_bread (BIO *bio,
+ char *in,
+ int max_length)
+ {
+- GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (bio->ptr);
++ GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (BIO_get_data(bio));
+ guint length = gsk_buffer_read (gsk_buffer_stream_peek_write_buffer (buffer_stream), in, max_length);
+ DEBUG_BIO("bio_gsk_stream_pair_bread: read %u bytes of %d bytes from backend write buffer", length, max_length);
+ if (length > 0)
+@@ -132,7 +132,7 @@ bio_gsk_stream_pair_ctrl (BIO *bio,
+ long num,
+ void *ptr)
+ {
+- GskBufferStreamOpenssl *openssl_buffer_stream = GSK_BUFFER_STREAM_OPENSSL (bio->ptr);
++ GskBufferStreamOpenssl *openssl_buffer_stream = GSK_BUFFER_STREAM_OPENSSL (BIO_get_data(bio));
+ g_assert (openssl_buffer_stream->bio == bio);
+
+ DEBUG_BIO("bio_gsk_stream_pair_ctrl: called with cmd=%d", cmd);
+@@ -161,27 +161,26 @@ bio_gsk_stream_pair_create (BIO *bio)
+ static int
+ bio_gsk_stream_pair_destroy (BIO *bio)
+ {
+- GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (bio->ptr);
++ GskBufferStream *buffer_stream = GSK_BUFFER_STREAM (BIO_get_data(bio));
+ DEBUG_BIO("bio_gsk_stream_pair_destroy (%p)", bio);
+ if (buffer_stream == NULL)
+ return FALSE;
+ g_object_unref (buffer_stream);
+- bio->ptr = NULL;
++ BIO_set_data(bio, NULL);
+ return TRUE;
+ }
+
+-static BIO_METHOD bio_method_gsk_stream_pair =
++static BIO_METHOD *bio_method_gsk_stream_pair = NULL;
++
++static BIO_METHOD *create_bio_method_gsk_stream_pair(void)
+ {
+- 22, /* type: this is quite a hack */
+- "GskStream-BIO", /* name */
+- bio_gsk_stream_pair_bwrite, /* bwrite */
+- bio_gsk_stream_pair_bread, /* bread */
+- NULL, /* bputs */
+- NULL, /* bgets */
+- bio_gsk_stream_pair_ctrl, /* ctrl */
+- bio_gsk_stream_pair_create, /* create */
+- bio_gsk_stream_pair_destroy, /* destroy */
+- NULL /* callback_ctrl */
++ BIO_METHOD *bm = BIO_meth_new(BIO_get_new_index(), "GskStream-BIO");
++ BIO_meth_set_write(bm, bio_gsk_stream_pair_bwrite);
++ BIO_meth_set_read(bm, bio_gsk_stream_pair_bread);
++ BIO_meth_set_ctrl(bm, bio_gsk_stream_pair_ctrl);
++ BIO_meth_set_create(bm, bio_gsk_stream_pair_create);
++ BIO_meth_set_destroy(bm, bio_gsk_stream_pair_destroy);
++ return bm;
+ };
+
+
+@@ -207,9 +206,11 @@ gsk_openssl_bio_stream_pair (BIO **bio_ou
+ {
+ GskBufferStreamOpenssl *openssl_stream = g_object_new (GSK_TYPE_BUFFER_STREAM_OPENSSL, NULL);
+ GskStream *stream = GSK_STREAM (openssl_stream);
+- *bio_out = BIO_new (&bio_method_gsk_stream_pair);
+- (*bio_out)->ptr = g_object_ref (stream);
+- (*bio_out)->init = TRUE; /// HMM...
++ if (bio_method_gsk_stream_pair == NULL)
++ bio_method_gsk_stream_pair = create_bio_method_gsk_stream_pair();
++ *bio_out = BIO_new (bio_method_gsk_stream_pair);
++ BIO_set_data(*bio_out, g_object_ref (stream));
++ BIO_set_init(*bio_out, TRUE); /// HMM...
+ *stream_out = GSK_BUFFER_STREAM (stream);
+ openssl_stream->bio = *bio_out;
+ return TRUE;