ports/net/gsk/files/patch-src_ssl_gskopensslbiostream.c
2021-03-15 07:20:56 +00:00

84 lines
3.5 KiB
C

--- 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;