Skip to content
Commits on Source (7)
Major changes in 1.50.2
=======================
* smb: Rework anonymous handling to avoid EINVAL (Ondrej Holy)
* http: Unescape prefix to fix handling of encoded URIs (Ondrej Holy)
* build: Fix build without Avahi support (Ondrej Holy)
Major changes in 1.50.1
=======================
* dav: Drop user from URI as a workaround for Nextcloud bug (Ondrej Holy)
......
......@@ -382,15 +382,14 @@ g_vfs_backend_dav_stream_skip (GInputStream *stream, GError **error)
static void
g_vfs_backend_dav_setup_display_name (GVfsBackend *backend)
{
GVfsBackendDav *dav_backend;
GUri *mount_base;
char *display_name;
char port[7] = {0, };
gint gport;
dav_backend = G_VFS_BACKEND_DAV (backend);
#ifdef HAVE_AVAHI
GVfsBackendDav *dav_backend = G_VFS_BACKEND_DAV (backend);
if (dav_backend->resolver != NULL)
{
const char *name;
......@@ -2378,6 +2377,7 @@ try_mount_send_opts (GVfsJobMount *job)
g_vfs_backend_dav_send_async (job->backend, msg_opts, try_mount_opts_cb, job);
}
#ifdef HAVE_AVAHI
static void
try_mount_resolve_cb (GObject *source, GAsyncResult *result, gpointer user_data)
{
......@@ -2404,6 +2404,7 @@ try_mount_resolve_cb (GObject *source, GAsyncResult *result, gpointer user_data)
try_mount_send_opts (job);
}
#endif
static gboolean
try_mount (GVfsBackend *backend,
......@@ -2412,17 +2413,18 @@ try_mount (GVfsBackend *backend,
GMountSource *mount_source,
gboolean is_automount)
{
GVfsBackendDav *dav_backend = G_VFS_BACKEND_DAV (backend);
GVfsBackendHttp *http_backend = G_VFS_BACKEND_HTTP (backend);
const char *host;
const char *type;
g_debug ("+ mount\n");
#ifdef HAVE_AVAHI
GVfsBackendDav *dav_backend = G_VFS_BACKEND_DAV (backend);
const char *host;
const char *type;
host = g_mount_spec_get (mount_spec, "host");
type = g_mount_spec_get (mount_spec, "type");
#ifdef HAVE_AVAHI
/* resolve DNS-SD style URIs */
if ((strcmp (type, "dav+sd") == 0 || strcmp (type, "davs+sd") == 0) && host != NULL)
{
......
......@@ -307,7 +307,7 @@ try_mount (GVfsBackend *backend,
real_mount_spec = g_mount_spec_new ("http");
g_mount_spec_set (real_mount_spec, "uri", uri_str);
path = g_uri_get_path (uri);
path = g_uri_unescape_string (g_uri_get_path (uri), "/");
if (path[0])
{
g_free (real_mount_spec->mount_prefix);
......
......@@ -78,9 +78,7 @@ struct _GVfsBackendSmb
GMountSource *mount_source; /* Only used/set during mount */
int mount_try;
gboolean mount_try_again;
gboolean mount_cancelled;
gboolean use_anonymous;
gboolean password_in_keyring;
GPasswordSave password_save;
......@@ -203,25 +201,14 @@ auth_callback (SMBCCTX *context,
backend->user == NULL &&
backend->domain == NULL)
{
/* Try again if kerberos login fails */
backend->mount_try_again = TRUE;
g_debug ("auth_callback - kerberos pass\n");
}
else if (backend->mount_try == 1 &&
backend->user == NULL &&
backend->domain == NULL)
{
/* Try again if ccache login fails */
backend->mount_try_again = TRUE;
g_debug ("auth_callback - ccache pass\n");
}
else if (backend->use_anonymous)
{
/* Try again if anonymous login fails */
backend->use_anonymous = FALSE;
backend->mount_try_again = TRUE;
g_debug ("auth_callback - anonymous login pass\n");
}
else
{
gboolean in_keyring = FALSE;
......@@ -301,13 +288,13 @@ auth_callback (SMBCCTX *context,
}
}
/* Try again if this fails */
backend->mount_try_again = TRUE;
smbc_setOptionNoAutoAnonymousLogin (backend->smb_context,
!anonymous);
if (anonymous)
{
backend->use_anonymous = TRUE;
backend->password_save = FALSE;
g_debug ("auth_callback - anonymous enabled\n");
}
else
{
......@@ -497,7 +484,6 @@ do_mount (GVfsBackend *backend,
*/
do
{
op_backend->mount_try_again = FALSE;
op_backend->mount_cancelled = FALSE;
g_debug ("do_mount - try #%d \n", op_backend->mount_try);
......@@ -535,15 +521,9 @@ do_mount (GVfsBackend *backend,
smbc_setOptionFallbackAfterKerberos (op_backend->smb_context, 1);
}
/* If the AskPassword reply requested anonymous login, enable the
* anonymous fallback and try again.
*/
smbc_setOptionNoAutoAnonymousLogin (op_backend->smb_context,
!op_backend->use_anonymous);
op_backend->mount_try ++;
}
while (op_backend->mount_try_again);
while (TRUE);
g_free (uri);
......
project(
'gvfs', 'c',
version: '1.50.1',
version: '1.50.2',
license: 'LGPL2+',
default_options: 'buildtype=debugoptimized',
meson_version: '>= 0.56.0',
......