[Spice-devel] [Spice-Gtk] SpiceSession: Create webdav even with NULL shared_dir

Victor Toso victortoso at redhat.com
Wed May 8 06:47:00 UTC 2019


Hi,

On Mon, May 06, 2019 at 04:06:45PM +0200, Javier Celaya wrote:
> Hi
> El lun, 06-05-2019 a las 10:37 +0000, Victor Toso escribió:
> > Hi,
> > On Fri, May 03, 2019 at 06:52:00PM +0200, Javier Celaya wrote:
> > > A phodav server created with a NULL shared dir is valid andresults
> > > in an error answer to all requests of the webdav channel,instead of
> > > silently ignoring them.
> > > This is better than just returning NULL
> > > fromspice_session_get_webdav_server because:a) it crashes
> > > channel_webdav.c:start_client.
> > 
> > Can you give some steps on how to reproduce? I was trying withremote-
> > viewer on F29 guest earlier and couldn't.
> 
> You cannot just try an existing client, this problem happened as we are
> developing our new client for flexVDI. You will have to modify some of
> the source code for remote-viewer to see it.
> The thing is, if you do not set the shared-dir property of the
> SpiceSession object, it default to the XDG public directory. This
> happens if you do not pass the "shared-dir" command line option, for
> instance. But how do I say "I do not want to share any directory with
> the guest"?

With remote-viewer, only when the user toggle 'Share folder' the
channel-webdav would connect, that is, you would see in the logs:

 > GSpice-DEBUG: 05:55:47.703: ../src/spice-channel.c:2707 webdav-11:0: Open coroutine starting 0x55a774a10a90
 > GSpice-DEBUG: 05:55:47.703: ../src/spice-channel.c:2544 webdav-11:0: Started background coroutine 0x55a774a100d0
 > GSpice-DEBUG: 05:55:47.703: ../src/spice-session.c:2246 webdav-11:0: Using plain text, port 5900
 > GSpice-DEBUG: 05:55:47.704: ../src/spice-session.c:2177 open host pasta.usersys.redhat.com:5900
 > GSpice-DEBUG: 05:55:47.704: ../src/spice-session.c:2099 webdav-11:0: connecting 0x7f2c4bfffa40...
 > GSpice-DEBUG: 05:55:47.729: ../src/spice-session.c:2083 webdav-11:0: connect ready
 > GSpice-DEBUG: 05:55:47.730: ../src/spice-channel.c:1367 webdav-11:0: channel type 11 id 0 num common caps 1 num caps 0
 > GSpice-DEBUG: 05:55:47.767: ../src/spice-channel.c:1391 webdav-11:0: Peer version: 2:2
 > GSpice-DEBUG: 05:55:47.768: ../src/spice-channel.c:1947 webdav-11:0: spice_channel_recv_link_msg: 2 caps
 > GSpice-DEBUG: 05:55:47.768: ../src/spice-channel.c:1961 webdav-11:0: got remote common caps:

virt-viewer-session has a bool property that's false by default,
for sharing the folder. When this turns true,
virt-viewer-session-spice would then spice_channel_connect() the
channel.

Does it make sense to your client to only connect to the
channel-webdav only if you want to share something?

> I can set the shared-dir property to a file, or a non- existing
> directory, and the guest just complaints when I try to access
> it through webdavd. However, this does not seem a good
> solution...
> Setting the property to NULL, on the other hand, seems a
> reasonable value for "share nothing", but it makes
> spice_session_get_webdav_server return NULL and start_client
> crashes.

I don't strong disagree that NULL is interesting to say "Nothing
to share" but if you have nothing to share, you might as well
ignore the channel? Similar is playback/record audio, in case you
don't have a sound card in your client you might as well ignored
it or if you don't have usb devices (i guess this is harder than
sound card!) you might ignore channel-usbredir too.

> Unless I missed something and there is some way of making
> remote-viewer share nothing... then we can just use that way.
> > > b) even if it did not crash, access to the shared dir from the
> > > guest   would fail by timeout instead of immediately notifying of
> > > an error.
> > 
> > Is that on windows as guest?
> 
> Yes, I tested it on Windows as guest. I tried to fix a) by just
> returning early from start_client if spice_session_get_webdav_server
> returned NULL, but then all requests made by spice-webdavd are silently
> ignored. There is a webdav channel but no webdav server... so I imagine
> spice-webdavd on Linux will get the same result.

> > I spent some time looking at the code, found small issue andadded a
> > checks on start_client(). Still, I don't see why weshould accept a
> > webdav server running on NULL instead of only ina valid folder but
> > I'm also interested in fixing (a) and (b) ifpossible.
> 
> As I explained before (maybe that should go in the commit
> message too) I wanted a way of sharing no directory at all.
> Passing NULL as shared- dir property seems like a good value,
> but you tell me if there is a better way.
> Best regards

Well, having the possibility of crash needs a fix either way but
let me know if what I said before works for you.

Cheers,

> > Cheers,
> > > --- src/spice-session.c | 4 ---- 1 file changed, 4 deletions(-)
> > > diff --git a/src/spice-session.c b/src/spice-session.cindex
> > > 04ba124..cbcd8c4 100644--- a/src/spice-session.c+++ b/src/spice-
> > > session.c@@ -2813,10 +2813,6 @@ PhodavServer*
> > > spice_session_get_webdav_server(SpiceSession *session)     static
> > > GMutex mutex;      const gchar *shared_dir =
> > > spice_session_get_shared_dir(session);-    if (shared_dir == NULL)
> > > {-        SPICE_DEBUG("No shared dir set, not creating webdav
> > > server");-        return NULL;-    }      g_mutex_lock(&mutex); --
> > > 2.20.1
> > > _______________________________________________Spice-devel mailing 
> > > listSpice-devel at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> -- 
> 
> 
> 
> 
>  
> 
> 
> 
> 
> 
>               
>               
>           
>           
>             Javier Celaya Alastrué
>           
>            Chief Technology Officer
>       
>       
>         
>            
>         javier.celaya at flexvdi.com
>         
>         
>           
>         +34696969959 
>       
>           
>         j_celaya
>         
>         
>           
>         Legal Information and Privacy Policy
>           
>       
>     
>     
>         
>             Política de confidencialidad
>             Este mensaje y los ficheros anexos son confidenciales dirigiéndose exclusivamente al destinatario mencionado en el encabezamiento. Si usted ha recibido este correo por error, tenga la amabilidad de eliminarlo de su sistema y no divulgar el contenido a terceros. Los datos personales facilitados por usted o por terceros serán tratados por FLEXIBLE SOFTWARE SOLUTIONS S.L.U. con la finalidad de gestionar y mantener los contactos y relaciones que se produzcan como consecuencia de la relación que mantiene con FLEXIBLE SOFTWARE SOLUTIONS S.L.U. Normalmente, la base jurídica que legitima este tratamiento, será su consentimiento, el interés legítimo o la necesidad para gestionar una relación contractual o similar. El plazo de conservación de sus datos vendrá determinado por la relación que mantiene con nosotros. Para más información al respecto, o para ejercer sus derechos de acceso, rectificación, supresión, oposición, limitación o portabilidad, dirija una comunicación por escrito a FLEXIBLE SOFTWARE SOLUTIONS S.L.U: Avenida de Ranillas 1D, Planta 3, Oficina 3G, Zaragoza o al correo electrónico pdo at flexvdi.com. En caso de considerar vulnerado su derecho a la protección de datos personales, podrá interponer una reclamación ante la Agencia Española de Protección de Datos (www.agpd.es). 
>         
>     
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190508/28a90cdd/attachment.sig>


More information about the Spice-devel mailing list