summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2018-07-26 10:36:08 +0200
committerOndrej Holy <oholy@redhat.com>2018-07-26 17:30:26 +0200
commit4a0f41d55f97a8549ef525258900dfb3ce56be6b (patch)
tree90ed6b4515df718dd540b3fd2cf28703674c5056
parent9299ed2620bbbe4b79c0835b25bc43b442d99942 (diff)
downloadgvfs-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.c10
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);