[Spice-devel] [phodav PATCH 7/7 v3] spice-webdavd-windows: Dismount shared folder on service stop

Lukas Venhoda lvenhoda at redhat.com
Thu Mar 24 15:15:57 UTC 2016


H

On Thu, Mar 24, 2016 at 10:34 AM, Victor Toso <lists at victortoso.com> wrote:

> Hi,
>
> On Thu, Mar 17, 2016 at 02:47:51PM +0100, Lukas Venhoda wrote:
> > When stopping the service, automatically disconnect shared folder on
> > windows. Not dismounting could lead to multiple shared folders.
>
> But when user disconnect, the service is not stopped, correct? I think
> we need some integration with spice-vdagent to be aware of when the
> client disconnect in order to umount the shared folder.
>
> That could be in a different bug  but please file it upstream and
> include this bits of information there.
>
>
Yes. This is not possible with the current implementation, and will require
VDAgent integration.
Will provide the neccessary information, and file a bug.


> >  static void
> > +unmap_drive(void)
> > +{
> > +  gchar local_name[3];
> > +  guint32 retval;
> > +
> > +  local_name[0] = drive_letter;
> > +  local_name[1] = ':';
> > +  local_name[2] = 0;
> > +
> > +  retval = WNetCancelConnection2(local_name, CONNECT_UPDATE_PROFILE,
> TRUE);
> > +
> > +  if (retval == NO_ERROR)
> > +    g_debug ("unmap_drive ok");
> > +  else if (retval == ERROR_NOT_CONNECTED)
> > +    g_debug ("drive not connected");
>
> Nothing should be done if we map the drive before but fail to unmap with
> ERROR_NOT_CONNECTED ?
>

We don't need to. This just tries to unmap the drive.
If the drive is already unmapped (not connected), then there's nothing to
do.


>
> > +  else
> > +    g_critical ("map_drive error %d", retval);
>
> Also, in multiple if/else if please use braces.
>

ok


> > @@ -969,6 +991,7 @@ service_ctrl_handler (DWORD ctrl, DWORD type, LPVOID
> data, LPVOID ctx)
> >      {
> >      case SERVICE_CONTROL_STOP:
> >      case SERVICE_CONTROL_SHUTDOWN:
> > +        unmap_drive ();
>
> As Pavel said, it does not seem you need drive_letter as global. You can
> have it as userdata in the GTask and as argument for unmap_drive ()
>

changed
since map and unmap are in different functions, user_data would not work
I changed he is_spice_folder_mapped function to return the letter,
and now I can unmap the drive correctly without the need of global variable.

-- 
Lukas Venhoda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20160324/a191cf5f/attachment.html>


More information about the Spice-devel mailing list