[Spice-devel] [PATCH spice-gtk 5/5] session: bind path and read-only to webdav server

Christophe Fergeau cfergeau at redhat.com
Mon Feb 23 05:20:30 PST 2015


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 at redhat.com>
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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150223/b93f1525/attachment.sig>


More information about the Spice-devel mailing list