<div dir="ltr">H<div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 24, 2016 at 10:34 AM, Victor Toso <span dir="ltr"><<a href="mailto:lists@victortoso.com" target="_blank">lists@victortoso.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<span class=""><br>
On Thu, Mar 17, 2016 at 02:47:51PM +0100, Lukas Venhoda wrote:<br>
> When stopping the service, automatically disconnect shared folder on<br>
> windows. Not dismounting could lead to multiple shared folders.<br>
<br>
</span>But when user disconnect, the service is not stopped, correct? I think<br>
we need some integration with spice-vdagent to be aware of when the<br>
client disconnect in order to umount the shared folder.<br>
<br>
That could be in a different bug  but please file it upstream and<br>
include this bits of information there.<br>
<div><div class="h5"><br></div></div></blockquote><div><br></div><div>Yes. This is not possible with the current implementation, and will require VDAgent integration.</div><div>Will provide the neccessary information, and file a bug.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">>  static void<br>
> +unmap_drive(void)<br>
> +{<br>
> +  gchar local_name[3];<br>
> +  guint32 retval;<br>
> +<br>
> +  local_name[0] = drive_letter;<br>
> +  local_name[1] = ':';<br>
> +  local_name[2] = 0;<br>
> +<br>
> +  retval = WNetCancelConnection2(local_name, CONNECT_UPDATE_PROFILE, TRUE);<br>
> +<br>
> +  if (retval == NO_ERROR)<br>
> +    g_debug ("unmap_drive ok");<br>
> +  else if (retval == ERROR_NOT_CONNECTED)<br>
> +    g_debug ("drive not connected");<br>
<br>
</div></div>Nothing should be done if we map the drive before but fail to unmap with<br>
ERROR_NOT_CONNECTED ?<br></blockquote><div><br></div><div>We don't need to. This just tries to unmap the drive.</div><div>If the drive is already unmapped (not connected), then there's nothing to do.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> +  else<br>
> +    g_critical ("map_drive error %d", retval);<br>
<br>
</span>Also, in multiple if/else if please use braces.<br></blockquote><div><br></div><div>ok</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> @@ -969,6 +991,7 @@ service_ctrl_handler (DWORD ctrl, DWORD type, LPVOID data, LPVOID ctx)<br>
>      {<br>
>      case SERVICE_CONTROL_STOP:<br>
>      case SERVICE_CONTROL_SHUTDOWN:<br>
> +        unmap_drive ();<br>
<br>
</span>As Pavel said, it does not seem you need drive_letter as global. You can<br>
have it as userdata in the GTask and as argument for unmap_drive ()<br></blockquote><div><br></div><div>changed</div><div>since map and unmap are in different functions, user_data would not work</div><div>I changed he is_spice_folder_mapped function to return the letter,</div><div>and now I can unmap the drive correctly without the need of global variable.</div><div> </div></div>-- <br><div class="gmail_signature">Lukas Venhoda</div>
</div></div>