summaryrefslogtreecommitdiff
path: root/server/reds_stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/reds_stream.c')
-rw-r--r--server/reds_stream.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/server/reds_stream.c b/server/reds_stream.c
index f5588977..7f6172fc 100644
--- a/server/reds_stream.c
+++ b/server/reds_stream.c
@@ -35,6 +35,11 @@ extern SpiceCoreInterface *core;
struct RedsStreamPrivate {
SSL *ssl;
+
+ ssize_t (*read)(RedsStream *s, void *buf, size_t nbyte);
+ ssize_t (*write)(RedsStream *s, const void *buf, size_t nbyte);
+ ssize_t (*writev)(RedsStream *s, const struct iovec *iov, int iovcnt);
+
};
static ssize_t stream_write_cb(RedsStream *s, const void *buf, size_t size)
@@ -123,7 +128,7 @@ ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte)
ret = reds_stream_sasl_read(s, buf, nbyte);
} else
#endif
- ret = s->read(s, buf, nbyte);
+ ret = s->priv->read(s, buf, nbyte);
return ret;
}
@@ -157,7 +162,7 @@ ssize_t reds_stream_write(RedsStream *s, const void *buf, size_t nbyte)
ret = reds_stream_sasl_write(s, buf, nbyte);
} else
#endif
- ret = s->write(s, buf, nbyte);
+ ret = s->priv->write(s, buf, nbyte);
return ret;
}
@@ -168,8 +173,8 @@ ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int iovcnt)
int n;
ssize_t ret = 0;
- if (s->writev != NULL) {
- return s->writev(s, iov, iovcnt);
+ if (s->priv->writev != NULL) {
+ return s->priv->writev(s, iov, iovcnt);
}
for (i = 0; i < iovcnt; ++i) {
@@ -247,9 +252,9 @@ RedsStream *reds_stream_new(int socket)
stream->info = spice_new0(SpiceChannelEventInfo, 1);
reds_stream_set_socket(stream, socket);
- stream->read = stream_read_cb;
- stream->write = stream_write_cb;
- stream->writev = stream_writev_cb;
+ stream->priv->read = stream_read_cb;
+ stream->priv->write = stream_write_cb;
+ stream->priv->writev = stream_writev_cb;
stream->async_read.stream = stream;
@@ -263,7 +268,7 @@ bool reds_stream_is_ssl(RedsStream *stream)
void reds_stream_disable_writev(RedsStream *stream)
{
- stream->writev = NULL;
+ stream->priv->writev = NULL;
}
RedsStreamSslStatus reds_stream_ssl_accept(RedsStream *stream)
@@ -313,9 +318,9 @@ int reds_stream_enable_ssl(RedsStream *stream, SSL_CTX *ctx)
SSL_set_bio(stream->priv->ssl, sbio, sbio);
- stream->write = stream_ssl_write_cb;
- stream->read = stream_ssl_read_cb;
- stream->writev = NULL;
+ stream->priv->write = stream_ssl_write_cb;
+ stream->priv->read = stream_ssl_read_cb;
+ stream->priv->writev = NULL;
return reds_stream_ssl_accept(stream);
}
@@ -419,8 +424,8 @@ static ssize_t reds_stream_sasl_write(RedsStream *s, const void *buf, size_t nby
s->sasl.encodedOffset = 0;
}
- ret = s->write(s, s->sasl.encoded + s->sasl.encodedOffset,
- s->sasl.encodedLength - s->sasl.encodedOffset);
+ ret = s->priv->write(s, s->sasl.encoded + s->sasl.encodedOffset,
+ s->sasl.encodedLength - s->sasl.encodedOffset);
if (ret <= 0) {
return ret;
@@ -455,7 +460,7 @@ static ssize_t reds_stream_sasl_read(RedsStream *s, uint8_t *buf, size_t nbyte)
buf += n;
}
- n = s->read(s, encoded, sizeof(encoded));
+ n = s->priv->read(s, encoded, sizeof(encoded));
if (n <= 0) {
return n;
}