[Spice-devel] [PATCH 11/13] server: add reds_channel_dispose()
Marc-André Lureau
marcandre.lureau at redhat.com
Tue Feb 22 08:09:05 PST 2011
Try to have a common base dispose() method for channels. For now, it
just free the caps.
Make use of it in snd_worker, and in sync_write() - sync_write() is
going to have default caps later on.
---
server/reds.c | 12 ++++++++++++
server/reds.h | 2 ++
server/snd_worker.c | 3 +--
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/server/reds.c b/server/reds.c
index c080005..d7ac6d8 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -1347,6 +1347,17 @@ static int sync_write(RedsStream *peer, const void *in_buf, size_t n)
return TRUE;
}
+void reds_channel_dispose(Channel *channel)
+{
+ free(channel->caps);
+ channel->caps = NULL;
+ channel->num_caps = 0;
+
+ free(channel->common_caps);
+ channel->common_caps = NULL;
+ channel->num_common_caps = 0;
+}
+
static int reds_send_link_ack(RedLinkInfo *link)
{
SpiceLinkHeader header;
@@ -1397,6 +1408,7 @@ static int reds_send_link_ack(RedLinkInfo *link)
channel->num_common_caps * sizeof(uint32_t));
ret &= sync_write(link->stream, channel->caps, channel->num_caps * sizeof(uint32_t));
+ reds_channel_dispose(&caps);
BIO_free(bio);
return ret;
}
diff --git a/server/reds.h b/server/reds.h
index 3c810e0..f0276b1 100644
--- a/server/reds.h
+++ b/server/reds.h
@@ -72,6 +72,8 @@ struct SpiceNetWireState {
struct TunnelWorker *worker;
};
+void reds_channel_dispose(Channel *channel);
+
ssize_t reds_stream_read(RedsStream *s, void *buf, size_t nbyte);
ssize_t reds_stream_write(RedsStream *s, const void *buf, size_t nbyte);
ssize_t reds_stream_writev(RedsStream *s, const struct iovec *iov, int iovcnt);
diff --git a/server/snd_worker.c b/server/snd_worker.c
index e412f55..242a983 100644
--- a/server/snd_worker.c
+++ b/server/snd_worker.c
@@ -1236,8 +1236,7 @@ static void snd_detach_common(SndWorker *worker)
snd_disconnect_channel(worker->connection);
reds_unregister_channel(&worker->base);
- free(worker->base.common_caps);
- free(worker->base.caps);
+ reds_channel_dispose(&worker->base);
}
void snd_detach_playback(SpicePlaybackInstance *sin)
--
1.7.4
More information about the Spice-devel
mailing list