diff options
author | Ondrej Holy <oholy@redhat.com> | 2018-07-26 10:36:08 +0200 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2018-07-26 17:30:26 +0200 |
commit | 4a0f41d55f97a8549ef525258900dfb3ce56be6b (patch) | |
tree | 90ed6b4515df718dd540b3fd2cf28703674c5056 | |
parent | 9299ed2620bbbe4b79c0835b25bc43b442d99942 (diff) | |
download | gvfs-4a0f41d55f97a8549ef525258900dfb3ce56be6b.tar.gz |
dav: Increase max number of connections to prevent lockups
Currently, the default value of max-conns-per-host libsoup property is
used, which causes dav backend lockups if two files are opened. I don't
see any easy solution how to prevent lockups, but we can definitely
reduce the chance of them by increasing max-conns properties. Much bigger
values are used by browsers nowadays. Hope that 32 is big enough for
regular use cases and small enough to not flood a server and not block
too much file descriptors...
Closes: https://gitlab.gnome.org/GNOME/gvfs/issues/6
-rw-r--r-- | daemon/gvfsbackenddav.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c index 967f1db4..4382d1b1 100644 --- a/daemon/gvfsbackenddav.c +++ b/daemon/gvfsbackenddav.c @@ -66,6 +66,10 @@ #include "gvfsdnssdresolver.h" #endif +/* Overwrite maximal number of connections that libsoup can open in one time in + order to prevent backend lockups when too many files is opened concurrently. */ +#define MAX_CONNS 32 + typedef struct _MountAuthData MountAuthData; static void mount_auth_info_free (MountAuthData *info); @@ -1868,7 +1872,11 @@ do_mount (GVfsBackend *backend, G_VFS_BACKEND_HTTP (backend)->mount_base = mount_base; /* Override the HTTP backend's default. */ - g_object_set (session, "ssl-strict", TRUE, NULL); + g_object_set (session, + "ssl-strict", TRUE, + SOUP_SESSION_MAX_CONNS_PER_HOST, MAX_CONNS, + SOUP_SESSION_MAX_CONNS, MAX_CONNS, + NULL); data = &(G_VFS_BACKEND_DAV (backend)->auth_info); data->mount_source = g_object_ref (mount_source); |