On Sat, Feb 21, 2015 at 01:40:16AM +0100, Marc-André Lureau wrote: > Keep the server property in sync with the session properties > --- > gtk/spice-session.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/gtk/spice-session.c b/gtk/spice-session.c > index 63a455d..e785ceb 100644 > --- a/gtk/spice-session.c > +++ b/gtk/spice-session.c > @@ -2650,6 +2650,13 @@ PhodavServer* spice_session_get_webdav_server(SpiceSession *session) > goto end; > > priv->webdav = phodav_server_new(shared_dir); > + g_object_bind_property(session, "share-dir-ro", > + priv->webdav, "read-only", > + G_BINDING_SYNC_CREATE|G_BINDING_BIDIRECTIONAL); > + g_object_bind_property(session, "shared-dir", > + priv->webdav, "root", > + G_BINDING_SYNC_CREATE|G_BINDING_BIDIRECTIONAL); > + ACK, but I believe you'll need something like the phodav patch below (this is untested, so even what I describe in the commit log could be totally wrong). From 7025eedb519f075bbfd6c8881d23927a99ec7cb9 Mon Sep 17 00:00:00 2001 From: Christophe Fergeau <cfergeau@xxxxxxxxxx> Date: Mon, 23 Feb 2015 11:21:48 +0100 Subject: [PATCH] Fix leaks on dynamic updates of PhodavServer::root When changing PhodavServer::root to a new value, update_root_handler() will get called to make the server handle the new root path. However, the old handler for the old path never gets removed, causing PhodavServer to leak resources, and to manage both the old and new paths. --- libphodav/phodav-server.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libphodav/phodav-server.c b/libphodav/phodav-server.c index 820984d..036b811 100644 --- a/libphodav/phodav-server.c +++ b/libphodav/phodav-server.c @@ -152,10 +152,29 @@ phodav_server_init (PhodavServer *self) } static void +path_handler_remove (PathHandler *handler) +{ + char *path; + + if (handler == NULL) + return; + + path = g_file_get_path (handler->file); + if (path == NULL) + return; + + soup_server_remove_handler (handler->self->server, path); + g_free(path); + handler->self->root_handler = NULL; +} + +static void update_root_handler (PhodavServer *self) { PathHandler *handler; + path_handler_remove (self->root_handler); + if (!self->root || !self->server) return; -- 2.1.0 > > end: > g_mutex_unlock(&mutex); > -- > 2.1.0 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
pgpsvnFURZSs0.pgp
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel