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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]